[INFO] fetching crate purple-ssh 2.13.0...
[INFO] testing purple-ssh-2.13.0 against master#1f7f8ea0721a3b1eb73e6c6d25cccb371434b320 for pr-154065-1
[INFO] extracting crate purple-ssh 2.13.0 into /workspace/builds/worker-5-tc1/source
[INFO] started tweaking crates.io crate purple-ssh 2.13.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate purple-ssh 2.13.0
[INFO] tweaked toml for crates.io crate purple-ssh 2.13.0 written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate purple-ssh 2.13.0 on toolchain 1f7f8ea0721a3b1eb73e6c6d25cccb371434b320
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate purple-ssh 2.13.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded cookie_store v0.22.0
[INFO] [stderr]   Downloaded instability v0.3.10
[INFO] [stderr]   Downloaded time-core v0.1.7
[INFO] [stderr]   Downloaded pem-rfc7468 v1.0.0
[INFO] [stderr]   Downloaded tempfile v3.26.0
[INFO] [stderr]   Downloaded libredox v0.1.14
[INFO] [stderr]   Downloaded time-macros v0.2.25
[INFO] [stderr]   Downloaded euclid v0.22.13
[INFO] [stderr]   Downloaded der v0.8.0
[INFO] [stderr]   Downloaded time v0.3.45
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] ba9f3561db92da8c4c603bd20e410679b9486f50d44819f9656fe6eb90780f41
[INFO] running `Command { std: "docker" "start" "-a" "ba9f3561db92da8c4c603bd20e410679b9486f50d44819f9656fe6eb90780f41", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ba9f3561db92da8c4c603bd20e410679b9486f50d44819f9656fe6eb90780f41", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ba9f3561db92da8c4c603bd20e410679b9486f50d44819f9656fe6eb90780f41", kill_on_drop: false }`
[INFO] [stdout] ba9f3561db92da8c4c603bd20e410679b9486f50d44819f9656fe6eb90780f41
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c2899abf890ef0403f4a6aea87026b7dc6ca464ed10e247de3a149dc0ad4147d
[INFO] running `Command { std: "docker" "start" "-a" "c2899abf890ef0403f4a6aea87026b7dc6ca464ed10e247de3a149dc0ad4147d", kill_on_drop: false }`
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling base64ct v1.8.3
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling zerocopy v0.8.42
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling instability v0.3.10
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling compact_str v0.9.0
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling time-core v0.1.7
[INFO] [stderr]    Compiling pem-rfc7468 v0.7.0
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling num_threads v0.1.7
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling der v0.7.10
[INFO] [stderr]    Compiling time v0.3.45
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling lru v0.16.3
[INFO] [stderr]    Compiling kasuari v0.4.11
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling line-clipping v0.3.5
[INFO] [stderr]    Compiling clap_lex v1.0.0
[INFO] [stderr]    Compiling num-bigint-dig v0.8.6
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling pem-rfc7468 v1.0.0
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling ratatui-core v0.1.0
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling openssl-probe v0.2.1
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling der v0.8.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling signature v2.2.0
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling webpki-root-certs v1.0.6
[INFO] [stderr]    Compiling spki v0.7.3
[INFO] [stderr]    Compiling utf8-zero v0.8.1
[INFO] [stderr]    Compiling pkcs8 v0.10.2
[INFO] [stderr]    Compiling ureq-proto v0.6.0
[INFO] [stderr]    Compiling pkcs1 v0.7.5
[INFO] [stderr]    Compiling purple-ssh v2.13.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling quick-xml v0.39.2
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.10
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling clap_complete v4.6.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling ratatui-macros v0.7.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling rsa v0.9.10
[INFO] [stderr]    Compiling ureq v3.3.0
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 56.20s
[INFO] running `Command { std: "docker" "inspect" "c2899abf890ef0403f4a6aea87026b7dc6ca464ed10e247de3a149dc0ad4147d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c2899abf890ef0403f4a6aea87026b7dc6ca464ed10e247de3a149dc0ad4147d", kill_on_drop: false }`
[INFO] [stdout] c2899abf890ef0403f4a6aea87026b7dc6ca464ed10e247de3a149dc0ad4147d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 68a027c987421f121b1fdde363c68be08dd1e88d86529fbbbdf7e89ea4eedb42
[INFO] running `Command { std: "docker" "start" "-a" "68a027c987421f121b1fdde363c68be08dd1e88d86529fbbbdf7e89ea4eedb42", kill_on_drop: false }`
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling assert-json-diff v2.0.2
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling unarray v0.1.4
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling colored v3.1.1
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling ureq-proto v0.6.0
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling num-bigint-dig v0.8.6
[INFO] [stderr]    Compiling ureq v3.3.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling instability v0.3.10
[INFO] [stderr]    Compiling rsa v0.9.10
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling tempfile v3.26.0
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling proptest v1.10.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling ratatui-macros v0.7.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling purple-ssh v2.13.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling mockito v1.7.2
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 01s
[INFO] running `Command { std: "docker" "inspect" "68a027c987421f121b1fdde363c68be08dd1e88d86529fbbbdf7e89ea4eedb42", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "68a027c987421f121b1fdde363c68be08dd1e88d86529fbbbdf7e89ea4eedb42", kill_on_drop: false }`
[INFO] [stdout] 68a027c987421f121b1fdde363c68be08dd1e88d86529fbbbdf7e89ea4eedb42
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 83de7e52562fa5986c6724d89b1106a5ae9b78d93f2953ac16c987fa5f9dd67e
[INFO] running `Command { std: "docker" "start" "-a" "83de7e52562fa5986c6724d89b1106a5ae9b78d93f2953ac16c987fa5f9dd67e", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.42s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/purple_ssh-a4e6a7733f223ef2)
[INFO] [stdout] 
[INFO] [stdout] running 1482 tests
[INFO] [stdout] test containers::tests::action_as_str ... ok
[INFO] [stdout] test containers::tests::action_command_long_id ... ok
[INFO] [stdout] test containers::tests::cache_parse_empty ... ok
[INFO] [stdout] test containers::tests::cache_duplicate_alias_last_wins ... ok
[INFO] [stdout] test containers::tests::action_command_all_combinations ... ok
[INFO] [stdout] test containers::tests::cache_parse_malformed_ignored ... ok
[INFO] [stdout] test containers::tests::cache_round_trip_podman ... ok
[INFO] [stdout] test containers::tests::cache_round_trip ... ok
[INFO] [stdout] test containers::tests::cache_parse_multiple_hosts ... ok
[INFO] [stdout] test containers::tests::container_action_copy ... ok
[INFO] [stdout] test containers::tests::container_error_debug ... ok
[INFO] [stdout] test containers::tests::container_error_display ... ok
[INFO] [stdout] test containers::tests::container_error_display_no_runtime ... ok
[INFO] [stdout] test containers::tests::cache_serde_unknown_runtime_rejected ... ok
[INFO] [stdout] test containers::tests::container_runtime_copy ... ok
[INFO] [stdout] test containers::tests::format_relative_time_boundary_86400s ... ok
[INFO] [stdout] test containers::tests::friendly_error_daemon_not_running ... ok
[INFO] [stdout] test containers::tests::friendly_error_connection_refused ... ok
[INFO] [stdout] test containers::tests::friendly_error_none_exit_code ... ok
[INFO] [stdout] test containers::tests::friendly_error_no_route ... ok
[INFO] [stdout] test containers::tests::friendly_error_permission_denied ... ok
[INFO] [stdout] test containers::tests::friendly_error_unknown_stderr_uses_generic_message ... ok
[INFO] [stdout] test containers::tests::friendly_error_podman_daemon ... ok
[INFO] [stdout] test containers::tests::id_colon_rejected ... ok
[INFO] [stdout] test containers::tests::id_empty ... ok
[INFO] [stdout] test containers::tests::id_injection_backtick ... ok
[INFO] [stdout] test containers::tests::id_injection_dollar ... ok
[INFO] [stdout] test containers::tests::id_injection_semicolon ... ok
[INFO] [stdout] test containers::tests::id_just_dash ... ok
[INFO] [stdout] test containers::tests::id_just_dot ... ok
[INFO] [stdout] test containers::tests::friendly_error_case_insensitive ... ok
[INFO] [stdout] test containers::tests::id_injection_pipe ... ok
[INFO] [stdout] test containers::tests::friendly_error_command_not_found ... ok
[INFO] [stdout] test containers::tests::friendly_error_empty_stderr ... ok
[INFO] [stdout] test containers::tests::id_newline ... ok
[INFO] [stdout] test containers::tests::friendly_error_network_unreachable ... ok
[INFO] [stdout] test containers::tests::id_full_sha256 ... ok
[INFO] [stdout] test containers::tests::id_slash_rejected ... ok
[INFO] [stdout] test containers::tests::id_unicode_rejected ... ok
[INFO] [stdout] test containers::tests::list_cmd_none_has_sentinels ... ok
[INFO] [stdout] test containers::tests::format_relative_time_boundary_3600s ... ok
[INFO] [stdout] test containers::tests::list_cmd_none_valid_shell_syntax ... ok
[INFO] [stdout] test containers::tests::list_cmd_podman ... ok
[INFO] [stdout] test containers::tests::format_relative_time_boundary_60s ... ok
[INFO] [stdout] test containers::tests::output_caller_runtime_podman ... ok
[INFO] [stdout] test containers::tests::id_parentheses_rejected ... ok
[INFO] [stdout] test containers::tests::output_no_sentinel_no_caller ... ok
[INFO] [stdout] test containers::tests::id_space ... ok
[INFO] [stdout] test containers::tests::id_valid_hex ... ok
[INFO] [stdout] test containers::tests::id_valid_names ... ok
[INFO] [stdout] test containers::tests::list_cmd_docker ... ok
[INFO] [stdout] test containers::tests::list_cmd_none_docker_first ... ok
[INFO] [stdout] test containers::tests::output_docker_sentinel ... ok
[INFO] [stdout] test containers::tests::output_empty_container_list ... ok
[INFO] [stdout] test containers::tests::output_motd_before_sentinel ... ok
[INFO] [stdout] test containers::tests::output_multiple_containers ... ok
[INFO] [stdout] test containers::tests::id_ampersand_rejected ... ok
[INFO] [stdout] test containers::tests::id_angle_brackets_rejected ... ok
[INFO] [stdout] test containers::tests::output_none_sentinel ... ok
[INFO] [stdout] test containers::tests::output_sentinel_none_on_last_line ... ok
[INFO] [stdout] test containers::tests::output_podman_sentinel ... ok
[INFO] [stdout] test containers::tests::output_no_sentinel_with_caller ... ok
[INFO] [stdout] test containers::tests::output_sentinel_on_last_line ... ok
[INFO] [stdout] test containers::tests::output_unknown_sentinel ... ok
[INFO] [stdout] test containers::tests::output_sentinel_with_crlf ... ok
[INFO] [stdout] test containers::tests::parse_ps_compose_names ... ok
[INFO] [stdout] test containers::tests::parse_ps_empty ... ok
[INFO] [stdout] test containers::tests::parse_ps_all_docker_states ... ok
[INFO] [stdout] test containers::tests::parse_ps_invalid_lines_ignored ... ok
[INFO] [stdout] test containers::tests::parse_ps_long_ports ... ok
[INFO] [stdout] test containers::tests::parse_ps_sha256_image ... ok
[INFO] [stdout] test containers::tests::parse_ps_single ... ok
[INFO] [stdout] test containers::tests::parse_runtime_crlf ... ok
[INFO] [stdout] test containers::tests::parse_ps_whitespace_only_lines_between_json ... ok
[INFO] [stdout] test containers::tests::relative_days ... ok
[INFO] [stdout] test containers::tests::relative_future_saturates ... ok
[INFO] [stdout] test containers::tests::relative_minutes ... ok
[INFO] [stdout] test containers::tests::relative_hours ... ok
[INFO] [stdout] test containers::tests::parse_ps_multiple ... ok
[INFO] [stdout] test containers::tests::parse_ps_leading_whitespace_json ... ok
[INFO] [stdout] test containers::tests::relative_just_now ... ok
[INFO] [stdout] test containers::tests::output_sentinel_indented ... ok
[INFO] [stdout] test containers::tests::runtime_as_str ... ok
[INFO] [stdout] test containers::tests::runtime_docker ... ok
[INFO] [stdout] test containers::tests::parse_runtime_empty_lines_between_motd ... ok
[INFO] [stdout] test containers::tests::truncate_exact ... ok
[INFO] [stdout] test containers::tests::runtime_motd_after_output ... ok
[INFO] [stdout] test containers::tests::truncate_long ... ok
[INFO] [stdout] test containers::tests::runtime_motd_prepended ... ok
[INFO] [stdout] test containers::tests::runtime_none ... ok
[INFO] [stdout] test containers::tests::runtime_trailing_whitespace ... ok
[INFO] [stdout] test containers::tests::truncate_ascii_boundary ... ok
[INFO] [stdout] test containers::tests::relative_time_unix_epoch ... ok
[INFO] [stdout] test containers::tests::truncate_emoji ... ok
[INFO] [stdout] test containers::tests::parse_ps_trailing_newline ... ok
[INFO] [stdout] test file_browser::tests::test_build_scp_args_upload ... ok
[INFO] [stdout] test containers::tests::runtime_podman ... ok
[INFO] [stdout] test containers::tests::truncate_empty ... ok
[INFO] [stdout] test containers::tests::truncate_max_two ... ok
[INFO] [stdout] test containers::tests::truncate_multibyte ... ok
[INFO] [stdout] test file_browser::tests::test_build_scp_args_with_dirs ... ok
[INFO] [stdout] test file_browser::tests::test_epoch_to_year ... ok
[INFO] [stdout] test containers::tests::truncate_short ... ok
[INFO] [stdout] test containers::tests::truncate_unicode_within_limit ... ok
[INFO] [stdout] test file_browser::tests::test_approximate_epoch_known_dates ... ok
[INFO] [stdout] test file_browser::tests::test_filter_ssh_warnings_empty ... ok
[INFO] [stdout] test file_browser::tests::test_filter_ssh_warnings_filters_warnings ... ok
[INFO] [stdout] test file_browser::tests::test_filter_ssh_warnings_keeps_plain_error ... ok
[INFO] [stdout] test file_browser::tests::test_filter_ssh_warnings_lowercase_see_https ... ok
[INFO] [stdout] test file_browser::tests::test_filter_ssh_warnings_only_warnings ... ok
[INFO] [stdout] test containers::tests::parse_ps_crlf_line_endings ... ok
[INFO] [stdout] test file_browser::tests::test_epoch_to_year_2100_boundary ... ok
[INFO] [stdout] test file_browser::tests::test_approximate_epoch_leap_year ... ok
[INFO] [stdout] test file_browser::tests::test_build_scp_args_download ... ok
[INFO] [stdout] test file_browser::tests::test_build_scp_args_spaces_in_path ... ok
[INFO] [stdout] test containers::tests::truncate_max_one ... ok
[INFO] [stdout] test file_browser::tests::test_filter_ssh_warnings_warning_prefix ... ok
[INFO] [stdout] test file_browser::tests::test_format_relative_time_exactly_60s ... ok
[INFO] [stdout] test file_browser::tests::test_format_relative_time_future ... ok
[INFO] [stdout] test file_browser::tests::test_format_relative_time_old_date ... ok
[INFO] [stdout] test file_browser::tests::test_format_relative_time_ranges ... ok
[INFO] [stdout] test file_browser::tests::test_format_short_date_different_year ... ok
[INFO] [stdout] test file_browser::tests::test_format_short_date_leap_year ... ok
[INFO] [stdout] test file_browser::tests::test_format_size ... ok
[INFO] [stdout] test file_browser::tests::test_parse_human_size ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_basic ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_date_invalid_day ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_date_invalid_month ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_date_invalid_year ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_date_midnight ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_date_old_format ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_output_populates_modified ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_date_recent_format ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_symlink_to_dir_dereferenced ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_empty ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_filename_with_spaces ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_output_date_asc_sort ... ok
[INFO] [stdout] test file_browser::tests::test_shell_escape_with_single_quote ... ok
[INFO] [stdout] test file_browser::tests::test_shell_escape_simple ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_output_date_sort ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_hidden_filter ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_symlink_to_file_dereferenced ... ok
[INFO] [stdout] test file_browser::tests::test_list_local_populates_modified ... ok
[INFO] [stdout] test file_browser::tests::test_list_local_sorts_dirs_first ... ok
[INFO] [stdout] test file_browser::tests::test_list_local_hidden ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_output_date_sort_with_dirs ... ok
[INFO] [stdout] test file_browser::tests::test_shell_escape_with_spaces ... ok
[INFO] [stdout] test file_browser::tests::test_sort_entries_date_multiple_dirs ... ok
[INFO] [stdout] test file_browser::tests::test_sort_entries_name_mode ... ok
[INFO] [stdout] test file_browser::tests::test_sort_entries_date_with_none_modified ... ok
[INFO] [stdout] test providers::aws::tests::test_ami_batch_size_is_reasonable ... ok
[INFO] [stdout] test providers::aws::tests::test_aws_invalid_region_error ... ok
[INFO] [stdout] test providers::aws::tests::test_aws_no_regions_error ... ok
[INFO] [stdout] test providers::aws::tests::test_aws_mixed_valid_invalid_region_error ... ok
[INFO] [stdout] test containers::tests::truncate_multibyte_utf8 ... ok
[INFO] [stdout] test file_browser::tests::test_sort_entries_date_asc_none_modified_sorts_to_end ... ok
[INFO] [stdout] test file_browser::tests::test_sort_entries_date_asc_oldest_first ... ok
[INFO] [stdout] test file_browser::tests::test_sort_entries_date_dirs_first_newest_first ... ok
[INFO] [stdout] test providers::aws::tests::test_aws_provider_name ... ok
[INFO] [stdout] test providers::aws::tests::test_aws_regions_contains_common ... ok
[INFO] [stdout] test providers::aws::tests::test_aws_region_groups_cover_all_regions ... ok
[INFO] [stdout] test providers::aws::tests::test_aws_regions_no_duplicates ... ok
[INFO] [stdout] test providers::aws::tests::test_extract_tags_empty ... ok
[INFO] [stdout] test providers::aws::tests::test_extract_tags_empty_value_skipped ... ok
[INFO] [stdout] test providers::aws::tests::test_extract_tags_filters_aws_prefix ... ok
[INFO] [stdout] test providers::aws::tests::test_extract_tags_no_name ... ok
[INFO] [stdout] test providers::aws::tests::test_extract_tags_name_and_values ... ok
[INFO] [stdout] test providers::aws::tests::test_format_utc_end_of_year ... ok
[INFO] [stdout] test providers::aws::tests::test_format_utc_leap_year ... ok
[INFO] [stdout] test providers::aws::tests::test_format_utc_epoch_zero ... ok
[INFO] [stdout] test providers::aws::tests::test_format_utc_known_date ... ok
[INFO] [stdout] test providers::aws::tests::test_hex_encode ... ok
[INFO] [stdout] test providers::aws::tests::test_hmac_sha256_known ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_credentials_default_profile ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_credentials_empty_content ... ok
[INFO] [stdout] test providers::aws::tests::test_no_ip_at_all_still_parseable ... ok
[INFO] [stdout] test providers::aws::tests::test_param_helper ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_credentials_missing_profile ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_credentials_incomplete_profile ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_credentials_named_profile ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_credentials_whitespace_handling ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_describe_images ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_describe_images_empty ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_describe_instances_basic ... ok
[INFO] [stdout] test providers::aws::tests::test_public_ip_preferred_over_private ... ok
[INFO] [stdout] test providers::aws::tests::test_aws_regions_not_empty ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_describe_instances_with_next_token ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_describe_instances_empty ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_describe_instances_multiple_reservations ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_private_ip_address ... ok
[INFO] [stdout] test providers::aws::tests::test_format_utc_year_2000 ... ok
[INFO] [stdout] test providers::aws::tests::test_resolve_credentials_no_colon ... ok
[INFO] [stdout] test providers::aws::tests::test_resolve_credentials_token_format ... ok
[INFO] [stdout] test providers::aws::tests::test_resolve_credentials_empty_parts ... ok
[INFO] [stdout] test providers::aws::tests::test_sha256_empty ... ok
[INFO] [stdout] test providers::aws::tests::test_sign_request_format ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_credentials_extra_keys_ignored ... ok
[INFO] [stdout] test providers::aws::tests::test_sign_request_different_regions ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_describe_instances_no_public_ip ... ok
[INFO] [stdout] test providers::azure::tests::test_azure_no_subscriptions_error ... ok
[INFO] [stdout] test providers::azure::tests::test_build_metadata_empty ... ok
[INFO] [stdout] test providers::azure::tests::test_build_metadata_full ... ok
[INFO] [stdout] test providers::azure::tests::test_azure_token_response_deserialize ... ok
[INFO] [stdout] test providers::azure::tests::test_azure_token_response_missing_token_fails ... ok
[INFO] [stdout] test providers::azure::tests::test_azure_rejects_invalid_subscription_id ... ok
[INFO] [stdout] test providers::aws::tests::test_uri_encode_empty ... ok
[INFO] [stdout] test providers::aws::tests::test_resolve_credentials_bad_profile_returns_auth_failed ... ok
[INFO] [stdout] test providers::azure::tests::test_build_metadata_normalizes_location_case ... ok
[INFO] [stdout] test providers::azure::tests::test_build_os_string_custom_image ... ok
[INFO] [stdout] test providers::azure::tests::test_azure_provider_name ... ok
[INFO] [stdout] test providers::azure::tests::test_build_tags_empty_map ... ok
[INFO] [stdout] test providers::azure::tests::test_extract_power_state_deallocated ... ok
[INFO] [stdout] test providers::azure::tests::test_extract_power_state_no_power_status ... ok
[INFO] [stdout] test providers::azure::tests::test_extract_power_state_running ... ok
[INFO] [stdout] test providers::azure::tests::test_build_tags_from_vm_tags ... ok
[INFO] [stdout] test providers::azure::tests::test_is_sp_file ... ok
[INFO] [stdout] test providers::azure::tests::test_nextlink_valid_azure_url ... ok
[INFO] [stdout] test providers::azure::tests::test_nextlink_domain_validation ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_empty_vm_list ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_nic_response ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_public_ip_response ... ok
[INFO] [stdout] test providers::azure::tests::test_build_os_string_full ... ok
[INFO] [stdout] test providers::aws::tests::test_sign_request_deterministic ... ok
[INFO] [stdout] test providers::azure::tests::test_invalid_subscription_id ... ok
[INFO] [stdout] test providers::aws::tests::test_sha256_known ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_public_ip_with_no_address ... ok
[INFO] [stdout] test providers::azure::tests::test_build_os_string_none ... ok
[INFO] [stdout] test providers::azure::tests::test_build_tags_empty ... ok
[INFO] [stdout] test providers::azure::tests::test_extract_power_state_none ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_service_principal_az_cli_format ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_vm_list_no_next_link ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_vm_with_null_properties ... ok
[INFO] [stdout] test providers::azure::tests::test_resolve_token_no_bearer_prefix ... ok
[INFO] [stdout] test providers::azure::tests::test_resolve_token_strips_bearer_prefix ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_case_insensitive_ids ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_falls_back_to_private ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_ip_config_no_primary_uses_first ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_nic_not_in_map ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_nic_with_no_ip_configs ... ok
[INFO] [stdout] test providers::aws::tests::test_uri_encode_passthrough ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_no_network_profile ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_no_primary_uses_first ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_service_principal_camel_case ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_pip_not_in_map_falls_back_to_private ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_vm_list_response ... ok
[INFO] [stdout] test providers::azure::tests::test_resolve_sp_token_file_not_found ... ok
[INFO] [stdout] test providers::azure::tests::test_valid_subscription_id ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_vm_list_with_next_link ... ok
[INFO] [stdout] test providers::azure::tests::test_sp_file_invalid_json ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_empty_nic_list ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_primary_nic_selection ... ok
[INFO] [stdout] test providers::azure::tests::test_sp_file_missing_fields ... ok
[INFO] [stdout] test providers::azure::tests::test_send_form_array_syntax_with_owned_strings ... ok
[INFO] [stdout] test providers::azure::tests::test_resolve_token_bearer_only_rejects_empty ... ok
[INFO] [stdout] test providers::azure::tests::test_vm_with_empty_vmid_is_detected ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_pip_empty_address_falls_back_to_private ... ok
[INFO] [stdout] test providers::azure::tests::test_vm_with_valid_vmid_is_not_empty ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_default_false_for_proxmox ... ok
[INFO] [stdout] test providers::config::tests::test_alias_prefix_override ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_prefers_public ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_default_all_others_true ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_explicit_true ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_malformed_value_treated_as_true ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_not_written_when_default ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_override_do_to_false ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_default_true_for_non_proxmox ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_true_variants ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_explicit_false_non_proxmox ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_false_variants ... ok
[INFO] [stdout] test providers::config::tests::test_comments_ignored ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_values ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_override_proxmox_to_true ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_written_only_when_non_default ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_default_proxmox_false ... ok
[INFO] [stdout] test providers::config::tests::test_configured_providers_empty ... ok
[INFO] [stdout] test providers::config::tests::test_configured_providers_returns_all ... ok
[INFO] [stdout] test providers::config::tests::test_blank_lines_ignored ... ok
[INFO] [stdout] test providers::config::tests::test_configured_providers_returns_all_sections ... ok
[INFO] [stdout] test providers::config::tests::test_default_alias_prefix_digitalocean ... ok
[INFO] [stdout] test providers::aws::tests::test_uri_encode_special_chars ... ok
[INFO] [stdout] test providers::config::tests::test_default_alias_prefix_from_short_label ... ok
[INFO] [stdout] test providers::config::tests::test_default_alias_prefix_gcp ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_nic_with_empty_ip_configs ... ok
[INFO] [stdout] test providers::config::tests::test_default_identity_file_empty ... ok
[INFO] [stdout] test providers::config::tests::test_default_alias_prefix_unknown_provider ... ok
[INFO] [stdout] test providers::config::tests::test_default_alias_prefix_upcloud ... ok
[INFO] [stdout] test providers::config::tests::test_default_user_is_root ... ok
[INFO] [stdout] test providers::config::tests::test_default_url_empty ... ok
[INFO] [stdout] test providers::config::tests::test_non_proxmox_url_parsed_but_ignored ... ok
[INFO] [stdout] test providers::config::tests::test_default_alias_prefix_proxmox ... ok
[INFO] [stdout] test providers::config::tests::test_parse_comments_and_blanks ... ok
[INFO] [stdout] test providers::config::tests::test_parse_duplicate_sections_first_wins ... ok
[INFO] [stdout] test providers::config::tests::test_default_user_root_when_not_specified ... ok
[INFO] [stdout] test providers::config::tests::test_defaults_applied ... ok
[INFO] [stdout] test providers::config::tests::test_parse_duplicate_sections_trailing ... ok
[INFO] [stdout] test providers::config::tests::test_parse_empty ... ok
[INFO] [stdout] test providers::config::tests::test_duplicate_section_first_wins ... ok
[INFO] [stdout] test providers::config::tests::test_parse_key_field_sets_identity_file ... ok
[INFO] [stdout] test providers::config::tests::test_parse_multiple_sections ... ok
[INFO] [stdout] test providers::config::tests::test_gcp_project_default_empty ... ok
[INFO] [stdout] test providers::config::tests::test_gcp_project_parsed ... ok
[INFO] [stdout] test providers::config::tests::test_gcp_project_roundtrip ... ok
[INFO] [stdout] test providers::config::tests::test_line_without_equals_ignored ... ok
[INFO] [stdout] test providers::config::tests::test_multiple_providers ... ok
[INFO] [stdout] test providers::config::tests::test_non_proxmox_url_not_written ... ok
[INFO] [stdout] test providers::config::tests::test_parse_single_section ... ok
[INFO] [stdout] test providers::config::tests::test_parse_unknown_keys_ignored ... ok
[INFO] [stdout] test providers::config::tests::test_parse_url_and_verify_tls ... ok
[INFO] [stdout] test providers::config::tests::test_parse_unknown_provider_still_parsed ... ok
[INFO] [stdout] test providers::config::tests::test_parse_value_with_equals ... ok
[INFO] [stdout] test providers::config::tests::test_parse_whitespace_in_section_name ... ok
[INFO] [stdout] test providers::config::tests::test_parse_whitespace_around_key_value ... ok
[INFO] [stdout] test providers::config::tests::test_proxmox_token_with_exclamation ... ok
[INFO] [stdout] test providers::config::tests::test_proxmox_url_parsed ... ok
[INFO] [stdout] test providers::config::tests::test_remove_nonexistent_section_noop ... ok
[INFO] [stdout] test providers::config::tests::test_remove_section ... ok
[INFO] [stdout] test providers::config::tests::test_remove_section_all ... ok
[INFO] [stdout] test providers::config::tests::test_remove_section_keeps_others ... ok
[INFO] [stdout] test providers::config::tests::test_section_by_name ... ok
[INFO] [stdout] test providers::config::tests::test_section_lookup ... ok
[INFO] [stdout] test providers::config::tests::test_section_lookup_found ... ok
[INFO] [stdout] test providers::config::tests::test_section_lookup_missing ... ok
[INFO] [stdout] test providers::config::tests::test_serialize_roundtrip_single_provider ... ok
[INFO] [stdout] test providers::config::tests::test_set_section_multiple_adds ... ok
[INFO] [stdout] test providers::config::tests::test_set_section_add ... ok
[INFO] [stdout] test providers::config::tests::test_set_section_replace ... ok
[INFO] [stdout] test providers::config::tests::test_set_section_replaces_existing ... ok
[INFO] [stdout] test providers::config::tests::test_token_with_equals_sign ... ok
[INFO] [stdout] test providers::config::tests::test_unknown_key_ignored ... ok
[INFO] [stdout] test providers::config::tests::test_url_and_verify_tls_round_trip ... ok
[INFO] [stdout] test providers::config::tests::test_set_section_adds_new ... ok
[INFO] [stdout] test providers::config::tests::test_verify_tls_false_variants ... ok
[INFO] [stdout] test providers::config::tests::test_whitespace_around_key_value ... ok
[INFO] [stdout] test providers::config::tests::test_whitespace_around_section_name ... ok
[INFO] [stdout] test providers::config::tests::test_verify_tls_true_variants ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_default_tags_empty ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_extra_fields_ignored ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_large_id ... ok
[INFO] [stdout] test providers::config::tests::test_section_not_found ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_multiple_private_v4_no_public ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_empty_networks_skipped ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_id_is_u64 ... ok
[INFO] [stdout] test providers::config::tests::test_user_override ... ok
[INFO] [stdout] test providers::config::tests::test_verify_tls_default_true ... ok
[INFO] [stdout] test providers::config::tests::test_verify_tls_values ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_multiple_public_v4_uses_first ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_prefers_v4_over_v6 ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_private_v6_not_used ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_tags_preserved ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_private_only_skipped ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_v6_default_empty ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_ipv6_only_droplet_uses_v6 ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_pagination_continues_when_total_exceeds_fetched ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_network_ip_extra_fields_ignored ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_pagination_stops_when_fetched_reaches_total ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_private_v4_public_v6_uses_v6 ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_empty_droplet_list_stops_pagination ... ok
[INFO] [stdout] test providers::gcp::tests::test_build_tags_from_labels ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_parse_droplet_response ... ok
[INFO] [stdout] test providers::gcp::tests::test_build_tags_from_network_tags ... ok
[INFO] [stdout] test providers::gcp::tests::test_build_tags_empty ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_meta_extra_fields_ignored ... ok
[INFO] [stdout] test providers::gcp::tests::test_build_tags_empty_items_vec ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_provider_name ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_no_project_error ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_zone_groups_cover_all_zones ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_zones_count ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_zones_contains_common ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_rejects_space_in_project_id ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_rejects_special_chars_in_project_id ... ok
[INFO] [stdout] test providers::gcp::tests::test_is_json_key_file ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_rejects_uppercase_project_id ... ok
[INFO] [stdout] test providers::gcp::tests::test_last_url_segment ... ok
[INFO] [stdout] test providers::gcp::tests::test_metadata_empty_fields ... ok
[INFO] [stdout] test providers::gcp::tests::test_instance_id_is_string ... ok
[INFO] [stdout] test providers::gcp::tests::test_metadata_full ... ok
[INFO] [stdout] test providers::gcp::tests::test_parse_empty_pagination_token ... ok
[INFO] [stdout] test providers::gcp::tests::test_parse_empty_zone ... ok
[INFO] [stdout] test providers::gcp::tests::test_parse_ipv6_access_configs ... ok
[INFO] [stdout] test providers::gcp::tests::test_parse_no_pagination_token ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_empty_network_ip ... ok
[INFO] [stdout] test providers::gcp::tests::test_parse_pagination_token ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_zones_no_duplicates ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_falls_back_to_internal ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_ipv6_cross_interface ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_ipv6_empty_returns_none ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_falls_back_to_ipv6 ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_multiple_interfaces_cross_interface ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_prefers_ipv4_over_ipv6 ... ok
[INFO] [stdout] test providers::gcp::tests::test_send_form_array_syntax_compiles ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_prefers_nat ... ok
[INFO] [stdout] test providers::gcp::tests::test_token_response_deserialize ... ok
[INFO] [stdout] test providers::gcp::tests::test_metadata_no_licenses ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_prefers_internal_over_ipv6 ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_no_interfaces ... ok
[INFO] [stdout] test providers::gcp::tests::test_parse_aggregated_list_response ... ok
[INFO] [stdout] test providers::config::tests::test_proxmox_url_fallback_in_section ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_valid_project_id ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_domain_scoped_project_id ... ok
[INFO] [stdout] test providers::gcp::tests::test_parse_missing_ipv6_access_configs ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_empty_zones_accepted ... ok
[INFO] [stdout] test providers::gcp::tests::test_token_response_missing_access_token_fails ... ok
[INFO] [stdout] test providers::gcp::tests::test_url_encode_empty ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_both_empty_skipped ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_default_labels_empty ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_both_null_skipped ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_dual_stack_prefers_v4 ... ok
[INFO] [stdout] test providers::gcp::tests::test_url_encode_plain ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_empty_ipv4_skipped ... ok
[INFO] [stdout] test providers::gcp::tests::test_url_encode_special_chars ... ok
[INFO] [stdout] test providers::hetzner::tests::test_datacenter_fallback_when_no_location ... ok
[INFO] [stdout] test providers::hetzner::tests::test_datacenter_without_nested_location_returns_none ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_empty_ipv4_with_v6_uses_v6 ... ok
[INFO] [stdout] test providers::hetzner::tests::test_empty_location_falls_back_to_datacenter_location ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_empty_name ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_empty_v6_skipped ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_label_empty_value_uses_key ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_labels_sorted ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_labels_to_tags_empty_value ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_labels_to_tags_key_value ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_labels_with_special_chars ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_large_id ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_extra_fields_ignored ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_many_labels_sorted ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_no_ip_skipped ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_empty_server_list ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_multiple_labels ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_pagination_stops ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_multiple_servers_parsed ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_pagination_extra_fields_ignored ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_ipinfo_extra_fields_ignored ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_pagination_continues ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_null_v6_field ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_prefers_v4_over_v6 ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_v6_cidr_128 ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_v6_only_fallback ... ok
[INFO] [stdout] test providers::hetzner::tests::test_ipv6_only_server_uses_v6 ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_v6_without_cidr ... ok
[INFO] [stdout] test providers::hetzner::tests::test_no_location_no_datacenter ... ok
[INFO] [stdout] test providers::hetzner::tests::test_location_preferred_over_datacenter ... ok
[INFO] [stdout] test providers::linode::tests::test_ipv6_only_instance_uses_v6 ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_100_63_not_cgnat ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_172_15_not_private ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_100_range_boundary ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_100_128_not_cgnat ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_172_32_not_private ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_172_nonnumeric ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_172_all_boundary_octets ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_172_range_boundary ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_cgnat_100_64_is_private ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_empty_ipv4_empty_ipv6_returns_none ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_empty_data_stops_pagination ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_empty_label ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_public_ranges ... ok
[INFO] [stdout] test providers::hetzner::tests::test_parse_hetzner_response ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_loopback ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_ipv6_cidr_stripped ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_default_tags_empty ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_all_private_falls_back_to_first ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_ipv6_empty_string ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_ipv6_field_omitted_falls_to_private ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_ipv6_no_cidr ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_ipv6_null ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_large_id ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_missing_ipv6_field ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_multiple_instances_parsed ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_multiple_public_ips_uses_first ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_no_ips_at_all ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_private_ip_first_then_public ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_private_v4_and_v6_prefers_private_v4 ... ok
[INFO] [stdout] test providers::linode::tests::test_parse_linode_prefers_public_ip ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_public_ipv4_preferred_over_ipv6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_disabled_simple ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_pagination_stops ... ok
[INFO] [stdout] test providers::linode::tests::test_parse_linode_response ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_enabled_explicit ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_private_only_falls_back_to_private ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_tags_preserved ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_enabled_explicit_zero_with_options ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_enabled_explicit_with_options ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_enabled_only_commas ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_enabled_many_options ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_pagination_continues ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_disabled_with_options ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_enabled_with_options ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_enabled_with_spaces ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_none ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_garbage_value ... ok
[INFO] [stdout] test providers::proxmox::tests::test_auth_header_already_prefixed ... ok
[INFO] [stdout] test providers::proxmox::tests::test_auth_header_prepends_prefix ... ok
[INFO] [stdout] test providers::proxmox::tests::test_auth_header_ldap_user ... ok
[INFO] [stdout] test providers::proxmox::tests::test_auth_header_complex_token ... ok
[INFO] [stdout] test providers::proxmox::tests::test_auth_header_with_prefix ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_ip_unusable_filtered ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_null_vmid ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_disabled_explicit ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_all_null_fields ... ok
[INFO] [stdout] test providers::proxmox::tests::test_auth_header_without_prefix ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_template_as_null ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_enabled_simple ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_disabled_explicit_with_options ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_ip_comma_separated_treated_as_single ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_ip_with_cidr_stripped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_null_name ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_enabled_2_not_treated_as_enabled ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_ip_field ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_partial_null_in_array ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_null_status ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_without_maxcpu_maxmem ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_numbered_values_non_sequential ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_template_as_boolean ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_numbered_values_null_value ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_template_as_false ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_ostype_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_with_maxcpu_maxmem ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_numbered_values_number_value ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_numbered_values_skips_non_string ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_ostype_missing ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_ostype_present ... ok
[INFO] [stdout] test providers::proxmox::tests::test_format_plan_cpu_only ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_numbered_values_sorted ... ok
[INFO] [stdout] test providers::proxmox::tests::test_format_plan_both ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_numbered_values_empty_map ... ok
[INFO] [stdout] test providers::proxmox::tests::test_format_plan_sub_gib_memory ... ok
[INFO] [stdout] test providers::proxmox::tests::test_format_plan_mem_only ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_numbered_values_empty_prefix ... ok
[INFO] [stdout] test providers::proxmox::tests::test_format_plan_none ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_numbered_values_ignores_non_numeric_suffix ... ok
[INFO] [stdout] test providers::proxmox::tests::test_format_plan_zeros ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resources_pve8_comma_tags ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_numbered_values_boolean_value ... ok
[INFO] [stdout] test providers::proxmox::tests::test_full_guest_agent_response_with_null_data ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_empty_ip_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_ip_with_cidr_prefix ... ok
[INFO] [stdout] test providers::proxmox::tests::test_full_guest_agent_response_with_null_result ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_realistic_multi_nic ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_empty_interfaces ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_empty_ip_address_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_ipv4_preferred ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_ipv6_fallback ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_loopback_then_real_ip ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_picks_ipv4_from_second_interface ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_response_with_null_interface_name_in_array ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_result_missing_is_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_response_null_result ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_skips_loopback_ip_on_non_lo_iface ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_skips_link_local_uppercase ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_skips_link_local ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_skips_mixed_case_link_local ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_skips_loopback_range ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_strips_cidr_ipv6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_two_ipv4_picks_first ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_strips_cidr_ipv4 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_skips_ipv6_loopback ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_interface_null_name ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_ip_address_null_fields ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_response_empty_data_object ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ipconfig_dhcp_falls_back_to_ip6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_result_null_is_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_interface_null_ip_addresses ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_response_null_data ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ipconfig_manual_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ipconfig_only_ip6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ipconfig_prefers_ipv4_over_ipv6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_is_unusable_ip_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_is_unusable_ip_unspecified_v6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_string_array_to_none ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_string_boolean_true_to_one ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_string_zero_to_string ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_string_number_to_string ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_u8_boolean_false_to_zero ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_u8_boolean_true ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_string_null_to_none ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet6_loopback_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet6_multiple_tokens ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet_leading_whitespace ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_u8_float_to_zero ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ipconfig_ip6_auto_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet_preferred ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet_empty_string ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ipconfig_ip6_manual_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet6_fallback ... ok
[INFO] [stdout] test providers::proxmox::tests::test_is_unusable_ip_normal_v4 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet6_global_with_scope ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_string_boolean_false_to_zero ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_skips_loopback ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_u8_missing_to_zero ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_u8_large_number_wraps ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet_tab_separated ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_u8_null_to_zero ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet_takes_precedence_over_ip_addresses ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet_with_scope_info ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_interface_null_ip_addresses ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_format_skips_link_local ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_inet6_skips_link_local ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_inet_loopback_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_interface_null_name ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_inet_preferred_over_inet6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_inet_skips_loopback ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_inet_skips_link_local_v4 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_inet_type_ipv4 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_multi_interface_with_lo_first ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_link_local_v4_falls_through_to_inet6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_multi_nic_net0_dhcp_net1_static ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_net_dhcp_falls_back_to_ip6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_net_ip6_auto_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_net_full_line ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_net_ip6_manual_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_strips_cidr ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_net_manual_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_only_lo_interface ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_resource_type_tag_no_duplicate ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_format_ipv4_preferred_over_ipv6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_format_skips_loopback ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_inet6_type ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_format_ipv4 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_skips_ipv6_loopback ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_skips_link_local_ipv4 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_skips_link_local_ipv6_zone_id_uppercase ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_skips_loopback ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_skips_loopback_ip_on_non_lo_iface ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_skips_link_local_ipv6_zone_id ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_skips_link_local_ipv6_colon ... ok
[INFO] [stdout] test providers::proxmox::tests::test_map_qemu_ostype_passthrough ... ok
[INFO] [stdout] test providers::proxmox::tests::test_map_qemu_ostype_windows ... ok
[INFO] [stdout] test providers::proxmox::tests::test_multi_nic_ipconfig_fallback ... ok
[INFO] [stdout] test providers::proxmox::tests::test_name_fallback_when_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_api_suffix ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_api_suffix_trailing_slash ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_bare ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_empty_string ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_multiple_trailing_slashes ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_no_port ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_trailing_slash ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_skips_mixed_case_link_local_inet6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_no_trailing ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_whitespace_only ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_guest_agent_response_double_wrapped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_both_dhcp ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_dhcp ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_dhcp_and_ip6_manual ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_dhcp_case_insensitive ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_dhcp_with_ip6_static ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ip6_auto ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ip6_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ip6_auto_case_insensitive ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ip6_dhcp ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_with_subpath ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_cluster_resources ... ok
[INFO] [stdout] test providers::proxmox::tests::test_map_qemu_ostype_linux ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_http_preserved ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_trailing_slashes_and_api ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ip6_manual ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ip6_only ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_just_api_path ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ip_manual ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ip_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_whitespace ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_whitespace_around_parts ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_dhcp ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_interfaces ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_dhcp_case_insensitive ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_dhcp_with_ip6_static ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_ip6_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_ip6_manual ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_ip6_only ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_ip_manual ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_manual_with_ip6_static ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_ipv4_preferred_over_ipv6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_static ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ipv4_preferred_over_ipv6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_pve7_semicolon_tags ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ipv6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_manual_case_insensitive ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_ip_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_no_ip_key ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_static ... ok
[INFO] [stdout] test providers::proxmox::tests::test_pve_tags_mixed_separators ... ok
[INFO] [stdout] test providers::proxmox::tests::test_pve_space_tags ... ok
[INFO] [stdout] test providers::proxmox::tests::test_resource_type_filter_storage_excluded ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_manual_with_ip6_static ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_ip6_auto ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_consecutive_separators_produce_no_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_ip6_auto_case_insensitive ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_pve8_comma_tags ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_mixed ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_mixed_all_separators ... ok
[INFO] [stdout] test providers::proxmox::tests::test_pve_tags_comma_separated ... ok
[INFO] [stdout] test providers::proxmox::tests::test_resource_type_tag_added ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_single_tag ... ok
[INFO] [stdout] test providers::proxmox::tests::test_resource_type_tag_no_duplicate_when_pve_tag_matches ... ok
[INFO] [stdout] test providers::proxmox::tests::test_server_id_format ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_commas ... ok
[INFO] [stdout] test providers::proxmox::tests::test_server_id_format_lxc ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_semicolons ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_spaces ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_whitespace ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ureq_status_429_does_not_match_proxmox_auth_pattern ... ok
[INFO] [stdout] test providers::proxmox::tests::test_template_filtered ... ok
[INFO] [stdout] test providers::proxmox::tests::test_unusable_ip_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ureq_status_500_matches_agent_error_pattern ... ok
[INFO] [stdout] test providers::proxmox::tests::test_unusable_ip_link_local_ipv4 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_unusable_ip_link_local_ipv6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_unusable_ip_loopback_ipv4 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_unusable_ip_loopback_ipv6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_lowercased ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ureq_status_403_matches_auth_pattern ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ureq_status_404_matches_lxc_iface_pattern ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ureq_status_401_matches_auth_pattern ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ureq_status_501_matches_agent_error_pattern ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ureq_status_501_matches_lxc_iface_pattern ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ureq_status_502_does_not_match_agent_patterns ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ureq_status_500_matches_lxc_iface_pattern ... ok
[INFO] [stdout] test providers::proxmox::tests::test_usable_ip_private ... ok
[INFO] [stdout] test providers::proxmox::tests::test_usable_ip_public ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmconfig_agent_as_boolean_false ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmconfig_agent_as_boolean ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmconfig_agent_as_integer ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmconfig_agent_as_string ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmid_zero_is_valid ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmconfig_flatten_deserialization ... ok
[INFO] [stdout] test providers::scaleway::tests::test_empty_server_list_stops_pagination ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmconfig_agent_as_integer_zero ... ok
[INFO] [stdout] test providers::scaleway::tests::test_image_name_parsed ... ok
[INFO] [stdout] test providers::scaleway::tests::test_default_tags_empty ... ok
[INFO] [stdout] test providers::scaleway::tests::test_image_null_handled ... ok
[INFO] [stdout] test providers::scaleway::tests::test_metadata_empty_fields_omitted ... ok
[INFO] [stdout] test providers::scaleway::tests::test_metadata_from_server ... ok
[INFO] [stdout] test providers::scaleway::tests::test_parse_list_servers_response ... ok
[INFO] [stdout] test providers::scaleway::tests::test_parse_server_with_public_ips ... ok
[INFO] [stdout] test providers::scaleway::tests::test_private_ip_parsed ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmconfig_agent_missing ... ok
[INFO] [stdout] test providers::scaleway::tests::test_parse_server_extra_fields_ignored ... ok
[INFO] [stdout] test providers::scaleway::tests::test_scaleway_invalid_zone_error ... ok
[INFO] [stdout] test providers::scaleway::tests::test_metadata_uses_zone_param_not_server_field ... ok
[INFO] [stdout] test providers::scaleway::tests::test_scaleway_no_zones_error ... ok
[INFO] [stdout] test providers::scaleway::tests::test_parse_server_with_legacy_public_ip ... ok
[INFO] [stdout] test providers::scaleway::tests::test_scaleway_mixed_valid_invalid_zone_error ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmconfig_agent_as_null ... ok
[INFO] [stdout] test providers::scaleway::tests::test_scaleway_provider_name ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmconfig_default ... ok
[INFO] [stdout] test providers::scaleway::tests::test_scw_zones_contains_common ... ok
[INFO] [stdout] test providers::scaleway::tests::test_scw_zones_no_duplicates ... ok
[INFO] [stdout] test providers::scaleway::tests::test_select_ip_empty_address_skipped ... ok
[INFO] [stdout] test providers::scaleway::tests::test_scw_zone_groups_cover_all_zones ... ok
[INFO] [stdout] test providers::scaleway::tests::test_select_ip_empty_private_skipped ... ok
[INFO] [stdout] test providers::scaleway::tests::test_select_ip_falls_back_to_private ... ok
[INFO] [stdout] test providers::scaleway::tests::test_select_ip_empty_public_ips_uses_legacy ... ok
[INFO] [stdout] test providers::scaleway::tests::test_select_ip_v6_cidr_stripped ... ok
[INFO] [stdout] test providers::scaleway::tests::test_select_ip_v6_only ... ok
[INFO] [stdout] test providers::scaleway::tests::test_server_id_is_uuid_string ... ok
[INFO] [stdout] test providers::scaleway::tests::test_select_ip_no_ip_returns_none ... ok
[INFO] [stdout] test providers::scaleway::tests::test_tags_preserved ... ok
[INFO] [stdout] test providers::scaleway::tests::test_scw_zones_count ... ok
[INFO] [stdout] test providers::scaleway::tests::test_select_ip_prefers_v4_over_v6 ... ok
[INFO] [stdout] test providers::sync::tests::test_build_alias ... ok
[INFO] [stdout] test providers::scaleway::tests::test_select_ip_multiple_v4_uses_first ... ok
[INFO] [stdout] test providers::sync::tests::test_deduplicate_alias_excluding_none ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_consecutive_specials ... ok
[INFO] [stdout] test providers::sync::tests::test_find_hosts_by_provider_wrong_provider_name ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_emoji ... ok
[INFO] [stdout] test providers::sync::tests::test_deduplicate_alias_excluding_self ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_dots_and_underscores ... ok
[INFO] [stdout] test providers::sync::tests::test_find_hosts_by_provider_in_includes ... ok
[INFO] [stdout] test providers::sync::tests::test_find_hosts_by_provider_mixed_includes_and_toplevel ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_leading_special ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_long_mixed_separators ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_numbers_only ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_single_special_char ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_mixed_special_chars ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_tabs_and_newlines ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_single_char ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_trailing_special ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_whitespace_only ... ok
[INFO] [stdout] test providers::sync::tests::test_build_alias_long_names ... ok
[INFO] [stdout] test providers::sync::tests::test_build_alias_prefix_with_hyphen ... ok
[INFO] [stdout] test providers::sync::tests::test_set_host_tags_empty_clears_tags ... ok
[INFO] [stdout] test providers::sync::tests::test_deduplicate_alias_excluding_chain ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_adds_group_header_on_first_host ... ok
[INFO] [stdout] test providers::sync::tests::test_deduplicate_alias_excluding_other ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_all_symbol_name_uses_server_fallback ... ok
[INFO] [stdout] test providers::sync::tests::test_set_host_provider_updates_existing ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_applies_identity_file_from_section ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_applies_user_from_section ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dry_run_add_count ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dedup_resolves_back_to_same_alias_unchanged ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_clears_stale_when_host_returns ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_unicode ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_deduplicates_alias ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dry_run_remove_count_preserves_config ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dry_run_remove_excludes_included_hosts ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dedup_server_id_in_response ... ok
[INFO] [stdout] test providers::sync::tests::test_find_hosts_by_provider_empty_includes ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_combined_add_update_remove ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dry_run_no_mutations ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_already_stale_then_remove_deleted ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dry_run_remove_count ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dry_run_rename_no_renames_tracked ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dry_run_update_preserves_config ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_empty_alias_prefix ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_duplicate_local_server_id_keeps_first ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_empty_ip_existing_host_counted_unchanged ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dry_run_reports_stale_count ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_empty_user_not_set ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_first_migration_empty_remote_writes_sentinel ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_idempotent_same_data ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_duplicate_user_provider_tag ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_identity_file_set_on_new_host ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_include_host_skips_remove ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_group_header_with_existing_trailing_blank ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_empty_ip_with_tags_not_added ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_empty_ip_existing_host_unchanged ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_empty_ip_not_added ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_duplicate_server_id_in_remote_skipped ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_duplicate_server_id_deduped ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_host_in_entries_map_but_alias_changed_by_another_provider ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_insert_adds_blank_line_before_next_group ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_marks_stale_when_host_disappears ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_empty_remote_empty_config_noop ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_adds_host_with_metadata ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_adds_new_hosts ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_metadata_with_rename ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_merge_case_insensitive ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_include_host_skips_update ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_multiple_hosts_disappear ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_metadata_order_insensitive ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_merges_new_provider_tag_with_user_tags ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_metadata_only_change_triggers_update ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_metadata_unchanged_no_update ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_metadata_dry_run_no_mutation ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_migration_cleans_overlapping_user_tags ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_insert_blank_line_real_world_scenario ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_manual_comment_survives_cleanup ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_alias_collision_dedup ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_provider_tags_replaces_with_migration ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_mixed_resolved_empty_and_missing ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_multiple_renames ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_no_double_blank_between_hosts ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_no_group_header_for_second_host ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_no_duplicate_header_on_repeated_sync ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_partial_failure_no_stale_marking ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_no_rename_when_prefix_unchanged ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_orphaned_provider_marker_counts_unchanged ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_preserves_user_tags ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_provider_tags_case_insensitive_no_update ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_provider_tags_exact_match_unchanged ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_provider_tags_case_insensitive_unchanged ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_provider_tags_cleared_remotely ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_large_batch ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_provider_tags_cleared_user_tags_survive ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_provider_tags_roundtrip ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_provider_tags_with_rename ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_recognizes_include_hosts_prevents_duplicate_add ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_remove_cleans_up_group_header ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_remove_all_when_remote_empty ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_remove_only_affects_own_provider ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_remove_skips_empty_ip_hosts ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_remove_deletes_truly_gone_hosts ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_removes_header_when_all_hosts_deleted ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_removes_orphan_header ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_removes_deleted ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_rename_and_ip_change ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_rename_and_ip_change_simultaneously ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_rename_and_tag_change_simultaneously ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_remove_deleted_still_hard_deletes ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_rename_self_exclusion_no_collision ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_result_default ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_set_provider_tags_empty_writes_sentinel ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_server_name_change_updates_alias ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_stale_config_byte_identical_after_clear ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_set_provider_does_not_clobber_provider_tags ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_stale_cross_provider_isolation ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_stale_empty_ip_return_preserves_hostname ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_rename_skips_included_host ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_rename_stable_with_manual_collision ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_renames_on_prefix_change ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_rename_dry_run_no_mutation ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_stale_host_returns_with_new_ip ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_result_counts_add_up ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_stale_host_returns_with_tag_changes ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_tag_merge_case_insensitive_no_duplicate ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_tag_merge_adds_new_remote_tag ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_tag_whitespace_trimmed_on_store ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_tag_merge_preserves_local_tags ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_stale_timestamp_preserved_not_refreshed ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_two_providers_independent ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_tags_cleared_remotely_preserved_locally ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_stale_preserves_neighboring_hosts ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_unchanged ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_tag_order_insensitive ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_tag_trimmed_remote_triggers_merge ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_unicode_name_uses_ascii_fallback ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_missing_authorized_defaults_true ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_updates_changed_ip ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_top_level_host_marked_stale ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_upgrade_migration ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_multiple_devices ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_without_remove_flag_keeps_deleted ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_stale_then_purge_leaves_clean_config ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_writes_provider_tags ... ok
[INFO] [stdout] test providers::tailscale::tests::test_auth_key_rejected ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_stale_result_count_includes_already_stale ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_connected_to_control_false ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_device_no_addresses_skipped ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_extra_fields_ignored ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_hostname_from_name ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_updates_changed_metadata ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_response_basic ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_tags_explicit_null ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_tags_null ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_extra_fields_ignored ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_unauthorized_skipped ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_offline_peer_included ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_multiple_peers ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_online_null ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_peer_no_ips_skipped ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_status_null_peer ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_status_basic ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_peer_ipv4_preferred ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_status_no_peers ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_tags_stripped ... ok
[INFO] [stdout] test providers::tailscale::tests::test_select_ip_strips_cidr ... ok
[INFO] [stdout] test providers::tailscale::tests::test_select_ip_ipv6_fallback ... ok
[INFO] [stdout] test providers::tailscale::tests::test_strip_tag_prefix ... ok
[INFO] [stdout] test providers::tailscale::tests::test_select_ip_empty ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_peer_ipv6_fallback ... ok
[INFO] [stdout] test providers::tailscale::tests::test_tailscale_short_label ... ok
[INFO] [stdout] test providers::tests::test_display_name_all_providers ... ok
[INFO] [stdout] test providers::tests::test_display_name_unknown_returns_input ... ok
[INFO] [stdout] test providers::tests::test_get_provider_all_known ... ok
[INFO] [stdout] test providers::tailscale::tests::test_tailscale_name ... ok
[INFO] [stdout] test providers::tests::test_get_provider_all_names_resolve ... ok
[INFO] [stdout] test providers::tests::test_get_provider_case_sensitive_and_unknown ... ok
[INFO] [stdout] test providers::tailscale::tests::test_select_ip_prefers_ipv4 ... ok
[INFO] [stdout] test providers::tests::test_get_provider_hetzner ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_updates_changed_tags ... ok
[INFO] [stdout] test providers::tests::test_get_provider_linode ... ok
[INFO] [stdout] test providers::tests::test_get_provider_proxmox ... ok
[INFO] [stdout] test providers::tests::test_get_provider_digitalocean ... ok
[INFO] [stdout] test providers::tests::test_get_provider_unknown_returns_none ... ok
[INFO] [stdout] test providers::tests::test_get_provider_vultr ... ok
[INFO] [stdout] test providers::tests::test_get_provider_with_config_gcp_uses_project_and_zones ... ok
[INFO] [stdout] test providers::tests::test_get_provider_with_config_proxmox_uses_url ... ok
[INFO] [stdout] test providers::tests::test_get_provider_with_config_unknown_returns_none ... ok
[INFO] [stdout] test providers::tests::test_http_agent_creates_agent ... ok
[INFO] [stdout] test providers::tests::test_http_agent_insecure_creates_agent ... ok
[INFO] [stdout] test providers::tests::test_get_provider_upcloud ... ok
[INFO] [stdout] test providers::tests::test_get_provider_with_config_all_providers ... ok
[INFO] [stdout] test providers::tests::test_get_provider_with_config_non_proxmox_delegates ... ok
[INFO] [stdout] test providers::tests::test_http_body_reader_take_truncates ... ok
[INFO] [stdout] test providers::tests::test_http_empty_json_body_returns_parse_error ... ok
[INFO] [stdout] test providers::tests::test_http_get_with_bearer_header ... ok
[INFO] [stdout] test providers::tests::test_http_401_maps_to_auth_failed ... ok
[INFO] [stdout] test providers::tests::test_http_connection_refused_maps_to_http_error ... ok
[INFO] [stdout] test providers::tests::test_http_403_maps_to_auth_failed ... ok
[INFO] [stdout] test providers::tests::test_http_500_maps_to_http_error ... ok
[INFO] [stdout] test providers::tests::test_http_429_maps_to_rate_limited ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_404_is_http ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_500_is_http ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_502_is_http ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_all_auth_codes_covered ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_401_is_auth_failed ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_all_status_codes_1xx_to_5xx ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_429_is_rate_limited ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_503_is_http ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_bad_uri ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_403_is_auth_failed ... ok
[INFO] [stdout] test providers::tests::test_http_body_reader_with_take ... ok
[INFO] [stdout] test providers::tests::test_http_get_with_custom_header ... ok
[INFO] [stdout] test providers::tests::test_http_get_json_response ... ok
[INFO] [stdout] test providers::tests::test_http_invalid_json_returns_parse_error ... ok
[INFO] [stdout] test providers::tests::test_http_multiple_headers ... ok
[INFO] [stdout] test providers::tests::test_http_nested_json_deserialization ... ok
[INFO] [stdout] test providers::tests::test_http_post_form_encoding ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_non_status_is_http ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_only_429_is_rate_limited ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_redirect_failed ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_timeout ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_too_many_redirects ... ok
[INFO] [stdout] test providers::tests::test_provider_display_name_all ... ok
[INFO] [stdout] test providers::tests::test_provider_display_name_unknown ... ok
[INFO] [stdout] test providers::tests::test_provider_error_debug_http ... ok
[INFO] [stdout] test providers::tests::test_provider_error_display_auth ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_connection_failed ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_io_error ... ok
[INFO] [stdout] test providers::tests::test_provider_error_debug_partial_result ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_200_is_http ... ok
[INFO] [stdout] test providers::tests::test_provider_error_display_cancelled ... ok
[INFO] [stdout] test providers::tests::test_provider_error_display_http ... ok
[INFO] [stdout] test providers::tests::test_provider_error_display_parse ... ok
[INFO] [stdout] test providers::tests::test_provider_error_display_partial_result ... ok
[INFO] [stdout] test providers::tests::test_provider_host_clone ... ok
[INFO] [stdout] test providers::tests::test_provider_host_construction ... ok
[INFO] [stdout] test providers::tests::test_provider_host_empty_fields ... ok
[INFO] [stdout] test providers::tests::test_provider_names_has_all_eleven ... ok
[INFO] [stdout] test providers::tests::test_provider_fetch_hosts_delegates_to_cancellable ... ok
[INFO] [stdout] test providers::tests::test_provider_names_count ... ok
[INFO] [stdout] test providers::tests::test_provider_error_display_rate_limited ... ok
[INFO] [stdout] test providers::tests::test_provider_short_labels ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_bare_ipv6 ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_digit_then_letters_not_stripped ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_ipv6_with_64 ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_ipv6_with_prefix ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_ipv4_with_8 ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_just_slash ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_multiple_slashes ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_slash_without_digits ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_empty ... ok
[INFO] [stdout] test providers::tests::test_http_no_redirects ... ok
[INFO] [stdout] test providers::upcloud::tests::test_collect_ips_empty_interfaces ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_ipv6_full_notation ... ok
[INFO] [stdout] test providers::upcloud::tests::test_collect_ips_multiple_addresses_on_same_interface ... ok
[INFO] [stdout] test providers::tests::test_http_read_to_string ... ok
[INFO] [stdout] test providers::upcloud::tests::test_collect_ips_private_not_in_public ... ok
[INFO] [stdout] test providers::upcloud::tests::test_collect_ips_two_public_interfaces ... ok
[INFO] [stdout] test providers::upcloud::tests::test_boot_disk_falls_back_to_first ... ok
[INFO] [stdout] test providers::upcloud::tests::test_boot_disk_preferred_over_first_device ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_slash_with_letters ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_trailing_slash ... ok
[INFO] [stdout] test providers::upcloud::tests::test_collect_ips_no_matching_type ... ok
[INFO] [stdout] test providers::upcloud::tests::test_detail_empty_interfaces ... ok
[INFO] [stdout] test providers::upcloud::tests::test_empty_server_list ... ok
[INFO] [stdout] test providers::upcloud::tests::test_os_metadata_empty_storage_device_list ... ok
[INFO] [stdout] test providers::upcloud::tests::test_labels_only_no_tags ... ok
[INFO] [stdout] test providers::upcloud::tests::test_os_metadata_from_storage_devices ... ok
[INFO] [stdout] test providers::upcloud::tests::test_os_metadata_missing_storage_devices ... ok
[INFO] [stdout] test providers::upcloud::tests::test_parse_detail_missing_networking ... ok
[INFO] [stdout] test providers::upcloud::tests::test_pagination_continues_when_count_equals_limit ... ok
[INFO] [stdout] test providers::upcloud::tests::test_pagination_stops_when_count_less_than_limit ... ok
[INFO] [stdout] test providers::upcloud::tests::test_parse_server_detail_with_networking ... ok
[INFO] [stdout] test providers::upcloud::tests::test_parse_detail_with_storage_devices ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_both_placeholders ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_empty ... ok
[INFO] [stdout] test providers::upcloud::tests::test_parse_server_list_response ... ok
[INFO] [stdout] test providers::upcloud::tests::test_parse_missing_tags_and_labels ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_multiple_public_v4_uses_first ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_placeholder_ipv4_falls_through_to_ipv6 ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_across_multiple_public_interfaces ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_public_empty_addresses ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_public_ipv4 ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_public_ipv6_fallback ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_private_only ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_utility_interface_ignored ... ok
[INFO] [stdout] test providers::upcloud::tests::test_server_name_hostname_fallback ... ok
[INFO] [stdout] test providers::upcloud::tests::test_server_name_title_preferred ... ok
[INFO] [stdout] test providers::upcloud::tests::test_server_name_uses_title_when_present ... ok
[INFO] [stdout] test providers::upcloud::tests::test_server_uuid_is_string ... ok
[INFO] [stdout] test providers::upcloud::tests::test_tags_lowercased_and_sorted ... ok
[INFO] [stdout] test providers::upcloud::tests::test_tags_combined_and_sorted ... ok
[INFO] [stdout] test providers::upcloud::tests::test_tags_label_empty_value_key_only ... ok
[INFO] [stdout] test providers::upcloud::tests::test_ureq_status_500_does_not_match_auth_pattern ... ok
[INFO] [stdout] test providers::upcloud::tests::test_ureq_status_401_matches_auth_pattern ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_skips_placeholder_ipv4 ... ok
[INFO] [stdout] test providers::upcloud::tests::test_ureq_status_403_matches_auth_pattern ... ok
[INFO] [stdout] test providers::vultr::tests::test_parse_instance_response ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_skips_placeholder_ipv6 ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_utility_skipped ... ok
[INFO] [stdout] test providers::upcloud::tests::test_ureq_status_429_matches_rate_limit_pattern ... ok
[INFO] [stdout] test providers::upcloud::tests::test_tags_only_no_labels ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_both_placeholder_skipped ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_cursor_pagination_empty_next_stops ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_cursor_pagination_has_next ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_default_tags_empty ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_default_v6_empty_string ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_empty_instance_list_stops ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_empty_label ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_empty_v4_and_empty_v6 ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_empty_v4_and_valid_v6 ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_empty_ip_skipped ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_meta_extra_fields_ignored ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_missing_next_link ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_multiple_tags ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_placeholder_v4_no_v6_field ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_multiple_instances_parsed ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_prefers_v4_over_v6 ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_string_id_preserved ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_tags_preserved ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_v4_zero_not_empty ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_extra_fields_ignored ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_label_with_special_chars ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_v6_fallback ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_v6_placeholder_only ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_valid_v4_ignores_placeholder_v6 ... ok
[INFO] [stdout] test snippet::tests::test_get_not_found ... ok
[INFO] [stdout] test snippet::tests::test_description_optional ... ok
[INFO] [stdout] test snippet::tests::test_parse_command_with_equals ... ok
[INFO] [stdout] test snippet::tests::test_description_with_equals ... ok
[INFO] [stdout] test snippet::tests::test_get_found ... ok
[INFO] [stdout] test snippet::tests::test_parse_line_without_equals_ignored ... ok
[INFO] [stdout] test snippet::tests::test_parse_comments_and_blanks ... ok
[INFO] [stdout] test snippet::tests::test_parse_multiple_snippets ... ok
[INFO] [stdout] test snippet::tests::test_parse_duplicate_sections_first_wins ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_colon_empty_default ... ok
[INFO] [stdout] test snippet::tests::test_name_with_equals_roundtrip ... ok
[INFO] [stdout] test snippet::tests::test_parse_only_comments_and_blanks ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_command_is_only_param ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_deduplicate ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_adjacent ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_default_with_colons ... ok
[INFO] [stdout] test snippet::tests::test_parse_empty ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_invalid_name_skipped ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_multiple ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_none ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_nested_braces_rejected ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_max_20 ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_single ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_single_braces_ignored ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_unclosed_brace ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_empty_inner ... ok
[INFO] [stdout] test snippet::tests::test_parse_section_without_close_bracket ... ok
[INFO] [stdout] test providers::tests::test_provider_names_contains_all ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_with_default ... ok
[INFO] [stdout] test snippet::tests::test_parse_snippet_without_command_skipped ... ok
[INFO] [stdout] test snippet::tests::test_parse_single_snippet ... ok
[INFO] [stdout] test snippet::tests::test_parse_whitespace_in_section_name ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_apc_sequence ... ok
[INFO] [stdout] test snippet::tests::test_remove ... ok
[INFO] [stdout] test snippet::tests::test_parse_whitespace_around_key_value ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_lone_esc_plus_letter ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_preserves_newlines_tabs ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_multiple_mixed_sequences ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_strips_c1_range ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_only_escapes ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_dcs_terminated_by_bel ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_plain_text ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_empty ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_lone_esc_at_end ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_pm_sequence ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_strips_control_chars ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_strips_csi ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_strips_dcs ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_strips_osc_bel ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_strips_osc_st ... ok
[INFO] [stdout] test snippet::tests::test_set_adds_new ... ok
[INFO] [stdout] test snippet::tests::test_set_multiple_then_remove_all ... ok
[INFO] [stdout] test snippet::tests::test_set_overwrite_preserves_order ... ok
[INFO] [stdout] test snippet::tests::test_shell_escape_empty ... ok
[INFO] [stdout] test snippet::tests::test_shell_escape_simple ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_truncated_csi_no_terminator ... ok
[INFO] [stdout] test snippet::tests::test_shell_escape_only_single_quotes ... ok
[INFO] [stdout] test snippet::tests::test_shell_escape_with_dollar ... ok
[INFO] [stdout] test snippet::tests::test_shell_escape_consecutive_single_quotes ... ok
[INFO] [stdout] test snippet::tests::test_set_replaces_existing ... ok
[INFO] [stdout] test snippet::tests::test_shell_escape_with_spaces ... ok
[INFO] [stdout] test snippet::tests::test_snippet_command_with_pipes_and_redirects ... ok
[INFO] [stdout] test snippet::tests::test_shell_escape_with_single_quote ... ok
[INFO] [stdout] test snippet::tests::test_substitute_default_also_escaped ... ok
[INFO] [stdout] test snippet::tests::test_shell_escape_with_semicolon ... ok
[INFO] [stdout] test snippet::tests::test_substitute_empty_value_falls_to_default ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_ipv4_with_32 ... ok
[INFO] [stdout] test snippet::tests::test_substitute_escapes_injection ... ok
[INFO] [stdout] test snippet::tests::test_substitute_adjacent_params ... ok
[INFO] [stdout] test snippet::tests::test_snippet_with_complex_command ... ok
[INFO] [stdout] test snippet::tests::test_substitute_overrides_default ... ok
[INFO] [stdout] test snippet::tests::test_substitute_missing_param_no_default ... ok
[INFO] [stdout] test snippet::tests::test_substitute_no_params_passthrough ... ok
[INFO] [stdout] test snippet::tests::test_substitute_no_recursive_expansion ... ok
[INFO] [stdout] test snippet::tests::test_substitute_non_ascii_around_params ... ok
[INFO] [stdout] test snippet::tests::test_substitute_simple ... ok
[INFO] [stdout] test snippet::tests::test_substitute_with_default ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_ipv4_passthrough ... ok
[INFO] [stdout] test providers::upcloud::tests::test_collect_ips_filters_by_type ... ok
[INFO] [stdout] test snippet::tests::test_parse_trailing_content_after_last_section ... ok
[INFO] [stdout] test snippet::tests::test_parse_unknown_keys_ignored ... ok
[INFO] [stdout] test snippet::tests::test_remove_nonexistent_noop ... ok
[INFO] [stdout] test snippet::tests::test_save_roundtrip ... ok
[INFO] [stdout] test snippet::tests::test_validate_name_with_equals ... ok
[INFO] [stdout] test snippet::tests::test_validate_command_control_chars ... ok
[INFO] [stdout] test snippet::tests::test_validate_param_name_empty ... ok
[INFO] [stdout] test snippet::tests::test_validate_command_empty ... ok
[INFO] [stdout] test snippet::tests::test_validate_command_valid ... ok
[INFO] [stdout] test snippet::tests::test_validate_command_whitespace_only ... ok
[INFO] [stdout] test snippet::tests::test_validate_command_with_newline ... ok
[INFO] [stdout] test snippet::tests::test_validate_command_with_tab ... ok
[INFO] [stdout] test snippet::tests::test_validate_name_control_chars ... ok
[INFO] [stdout] test snippet::tests::test_validate_name_empty ... ok
[INFO] [stdout] test snippet::tests::test_validate_name_newline ... ok
[INFO] [stdout] test snippet::tests::test_save_to_temp_file ... ok
[INFO] [stdout] test snippet::tests::test_validate_name_special_chars ... ok
[INFO] [stdout] test snippet::tests::test_validate_name_whitespace ... ok
[INFO] [stdout] test snippet::tests::test_validate_param_name_hyphen_only ... ok
[INFO] [stdout] test snippet::tests::test_validate_param_name_rejects_quote ... ok
[INFO] [stdout] test snippet::tests::test_validate_param_name_unicode ... ok
[INFO] [stdout] test ssh_config::model::tests::add_forward_inserts_directive ... ok
[INFO] [stdout] test ssh_config::model::tests::add_host_appends_when_no_wildcards ... ok
[INFO] [stdout] test ssh_config::model::tests::add_host_inserts_before_trailing_pattern_host ... ok
[INFO] [stdout] test ssh_config::model::tests::add_forward_preserves_indentation ... ok
[INFO] [stdout] test ssh_config::model::tests::add_host_no_triple_blank_lines ... ok
[INFO] [stdout] test snippet::tests::test_validate_param_name_rejects_braces ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_among_many_purple_comments ... ok
[INFO] [stdout] test ssh_config::model::tests::add_host_appends_when_wildcard_at_beginning ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_does_not_interfere_with_host_matching ... ok
[INFO] [stdout] test snippet::tests::test_validate_param_name_rejects_dot ... ok
[INFO] [stdout] test snippet::tests::test_validate_param_name_rejects_whitespace ... ok
[INFO] [stdout] test snippet::tests::test_validate_param_name_underscore_only ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_host_with_multi_pattern_is_skipped ... ok
[INFO] [stdout] test ssh_config::model::tests::add_forward_multi_pattern_host ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_ignores_non_askpass_purple_comments ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_ignores_empty_value ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_mixed_with_tunnel_directives ... ok
[INFO] [stdout] test ssh_config::model::tests::add_forward_to_empty_block ... ok
[INFO] [stdout] test ssh_config::model::tests::add_host_inserts_before_trailing_wildcard ... ok
[INFO] [stdout] test ssh_config::model::tests::add_multiple_forwards_same_type ... ok
[INFO] [stdout] test providers::tests::test_http_xml_deserialization_with_quick_xml ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_coexists_with_provider_comment ... ok
[INFO] [stdout] test snippet::tests::test_validate_name_valid ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_idempotent_set_same_value ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_returns_bw_source ... ok
[INFO] [stdout] test snippet::tests::test_validate_param_name_valid ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_only_on_first_matching_host ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_returns_none_when_absent ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_returns_op_uri ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_returns_custom_command ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_returns_pass_source ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_returns_vault_with_field ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_survives_directive_reorder ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_tab_indent_preserved ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_with_crlf_line_endings ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_with_value_containing_hash ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_with_long_op_uri ... ok
[INFO] [stdout] test ssh_config::model::tests::clear_host_stale_delegates ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_with_value_containing_equals ... ok
[INFO] [stdout] test ssh_config::model::tests::clear_host_stale_nonexistent_alias_is_noop ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_returns_keychain ... ok
[INFO] [stdout] test ssh_config::model::tests::clear_stale_preserves_other_purple_comments ... ok
[INFO] [stdout] test ssh_config::model::tests::has_forward_finds_match ... ok
[INFO] [stdout] test ssh_config::model::tests::clear_stale_removes_bare_comment ... ok
[INFO] [stdout] test ssh_config::model::tests::has_forward_multi_pattern_host ... ok
[INFO] [stdout] test ssh_config::model::tests::clear_stale_removes_comment ... ok
[INFO] [stdout] test ssh_config::model::tests::clear_stale_when_absent_is_noop ... ok
[INFO] [stdout] test ssh_config::model::tests::delete_host_undoable_keeps_group_header_for_undo ... ok
[INFO] [stdout] test ssh_config::model::tests::has_forward_no_match ... ok
[INFO] [stdout] test ssh_config::model::tests::has_forward_tab_whitespace_normalized ... ok
[INFO] [stdout] test ssh_config::model::tests::delete_host_undoable_preserves_header_when_others_remain ... ok
[INFO] [stdout] test ssh_config::model::tests::delete_host_undoable_returns_original_position_for_undo ... ok
[INFO] [stdout] test ssh_config::model::tests::delete_last_provider_host_removes_group_header ... ok
[INFO] [stdout] test ssh_config::model::tests::delete_non_provider_host_leaves_group_headers ... ok
[INFO] [stdout] test ssh_config::model::tests::delete_one_of_multiple_provider_hosts_preserves_group_header ... ok
[INFO] [stdout] test ssh_config::model::tests::edit_tunnel_detects_duplicate_after_remove ... ok
[INFO] [stdout] test ssh_config::model::tests::find_tunnel_directives_multi_pattern_host ... ok
[INFO] [stdout] test ssh_config::model::tests::find_tunnel_directives_no_match ... ok
[INFO] [stdout] test ssh_config::model::tests::has_forward_case_insensitive_key ... ok
[INFO] [stdout] test ssh_config::model::tests::has_forward_exact_match ... ok
[INFO] [stdout] test ssh_config::model::tests::has_forward_whitespace_normalized ... ok
[INFO] [stdout] test ssh_config::model::tests::has_tunnels_true_with_forward ... ok
[INFO] [stdout] test ssh_config::model::tests::is_included_host_false_for_main_config ... ok
[INFO] [stdout] test ssh_config::model::tests::host_entry_tunnel_count_populated ... ok
[INFO] [stdout] test ssh_config::model::tests::is_included_host_false_for_nonexistent ... ok
[INFO] [stdout] test ssh_config::model::tests::is_included_host_multi_pattern_main_config ... ok
[INFO] [stdout] test ssh_config::model::tests::meta_empty_when_no_comment ... ok
[INFO] [stdout] test ssh_config::model::tests::meta_removed_when_empty ... ok
[INFO] [stdout] test ssh_config::model::tests::provider_group_display_name_matches_providers_mod ... ok
[INFO] [stdout] test ssh_config::model::tests::multiple_hosts_independent_askpass ... ok
[INFO] [stdout] test ssh_config::model::tests::remove_forward_leaves_other_directives ... ok
[INFO] [stdout] test ssh_config::model::tests::meta_sanitizes_commas_in_values ... ok
[INFO] [stdout] test ssh_config::model::tests::remove_forward_case_insensitive_key_match ... ok
[INFO] [stdout] test ssh_config::model::tests::remove_forward_no_match_is_noop ... ok
[INFO] [stdout] test ssh_config::model::tests::meta_round_trip ... ok
[INFO] [stdout] test ssh_config::model::tests::remove_forward_returns_false_on_no_match ... ok
[INFO] [stdout] test ssh_config::model::tests::meta_replaces_existing ... ok
[INFO] [stdout] test ssh_config::model::tests::remove_forward_returns_false_for_unknown_host ... ok
[INFO] [stdout] test ssh_config::model::tests::meta_in_host_entry ... ok
[INFO] [stdout] test ssh_config::model::tests::remove_forward_removes_exact_match ... ok
[INFO] [stdout] test ssh_config::model::tests::remove_forward_tab_whitespace_normalized ... ok
[INFO] [stdout] test ssh_config::model::tests::meta_parses_key_value_pairs ... ok
[INFO] [stdout] test ssh_config::model::tests::remove_forward_returns_true_on_match ... ok
[INFO] [stdout] test ssh_config::model::tests::repair_absorbed_group_comment ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_custom_command_with_percent ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_long_op_uri ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_empty_removes_comment ... ok
[INFO] [stdout] test ssh_config::model::tests::repair_clean_config_returns_zero ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_idempotent_same_value ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_on_nonexistent_host ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_preserves_indent ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_on_host_with_many_directives ... ok
[INFO] [stdout] test ssh_config::model::tests::repair_strips_trailing_blanks_before_group ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_preserves_other_directives ... ok
[INFO] [stdout] test ssh_config::model::tests::repair_roundtrip_serializes_correctly ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_does_not_remove_tags ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_adds_comment ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_with_hash_in_value ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_vault_with_hash_field ... ok
[INFO] [stdout] test ssh_config::model::tests::set_stale_adds_comment ... ok
[INFO] [stdout] test ssh_config::model::tests::set_stale_preserves_indent ... ok
[INFO] [stdout] test ssh_config::model::tests::set_stale_four_space_indent ... ok
[INFO] [stdout] test ssh_config::model::tests::set_stale_preserves_other_purple_comments ... ok
[INFO] [stdout] test ssh_config::model::tests::set_stale_removes_multiple_stale_comments ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_in_host_entry ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_preserves_other_non_directive_comments ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_absent_in_host_entry ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_replaces_existing ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_does_not_match_similar_comments ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_then_clear_then_set_again ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_coexists_with_other_annotations ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_hosts_collects_all ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_does_not_accumulate_blank_lines ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_with_equals_in_value ... ok
[INFO] [stdout] test ssh_config::model::tests::set_host_stale_nonexistent_alias_is_noop ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_on_last_host_preserves_trailing_newline ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_multiple_comments_first_wins ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_hosts_empty_config ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_preserves_all_directives_and_comments ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_preserves_blank_line_before_group_header ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_preserves_blank_line_between_hosts ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_set_and_clear_is_byte_identical ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_roundtrip ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_timestamp_zero ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_with_crlf_preserves_line_endings ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_returns_timestamp ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_returns_none_for_malformed ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_with_u64_max ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_with_u64_overflow ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_returns_none_when_absent ... ok
[INFO] [stdout] test ssh_config::model::tests::set_host_stale_delegates ... ok
[INFO] [stdout] test ssh_config::model::tests::test_has_provider_tags_comment_absent ... ok
[INFO] [stdout] test ssh_config::model::tests::test_has_provider_tags_comment_present ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_with_whitespace_in_timestamp ... ok
[INFO] [stdout] test ssh_config::model::tests::test_has_provider_tags_comment_sentinel ... ok
[INFO] [stdout] test ssh_config::model::tests::test_provider_tags_empty ... ok
[INFO] [stdout] test ssh_config::model::tests::test_provider_tags_parsing ... ok
[INFO] [stdout] test ssh_config::model::tests::test_sanitize_tag_strips_bidi ... ok
[INFO] [stdout] test ssh_config::model::tests::test_sanitize_tag_preserves_unicode ... ok
[INFO] [stdout] test ssh_config::model::tests::test_sanitize_tag_strips_commas ... ok
[INFO] [stdout] test ssh_config::model::tests::test_sanitize_tag_truncates_long ... ok
[INFO] [stdout] test ssh_config::model::tests::test_set_askpass_does_not_delete_similar_comments ... ok
[INFO] [stdout] test ssh_config::model::tests::to_entry_askpass_none_when_absent ... ok
[INFO] [stdout] test ssh_config::model::tests::test_set_meta_sanitizes_control_chars ... ok
[INFO] [stdout] test ssh_config::model::tests::tunnel_count_counts_forwards ... ok
[INFO] [stdout] test ssh_config::model::tests::tunnel_count_zero_for_no_forwards ... ok
[INFO] [stdout] test ssh_config::model::tests::test_sanitize_tag_strips_control_chars ... ok
[INFO] [stdout] test ssh_config::model::tests::test_set_provider_tags_does_not_delete_user_tags ... ok
[INFO] [stdout] test ssh_config::model::tests::test_set_meta_does_not_delete_similar_comments ... ok
[INFO] [stdout] test ssh_config::model::tests::tunnel_directives_skips_malformed ... ok
[INFO] [stdout] test ssh_config::model::tests::test_set_tags_does_not_delete_provider_tags ... ok
[INFO] [stdout] test ssh_config::model::tests::tunnel_directives_extracts_forwards ... ok
[INFO] [stdout] test ssh_config::model::tests::to_entry_includes_askpass ... ok
[INFO] [stdout] test ssh_config::model::tests::upsert_preserves_space_separator_when_value_contains_equals ... ok
[INFO] [stdout] test ssh_config::model::tests::tunnel_count_case_insensitive ... ok
[INFO] [stdout] test ssh_config::model::tests::upsert_preserves_spaced_equals_separator ... ok
[INFO] [stdout] test ssh_config::model::tests::upsert_preserves_equals_separator ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_expand_env_vars_dollar_without_brace ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_expand_env_vars_multiple ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_basic_host ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_expand_env_vars_no_vars ... ok
[INFO] [stdout] test ssh_config::model::tests::tunnel_directives_extracts_all_types ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_equals_syntax_key_value ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_comments_preserved ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_expand_env_vars_unknown_preserved ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_expand_env_vars_basic ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_expand_env_vars_unclosed_brace ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_host_equals_space_syntax ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_equals_in_value_not_treated_as_separator ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_host_equals_case_insensitive ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_host_inline_comment_stripped ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_host_equals_syntax ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_host_multi_pattern_with_inline_comment ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_host_space_equals_space_syntax ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_host_space_equals_syntax ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_host_with_tab_separator ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_hostname_equals_not_parsed_as_host ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_include_directive_parsed ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_include_round_trip ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_include_with_tab_separator ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_include_with_equals_separator ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_match_block_round_trip ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_match_at_start_of_file ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_match_block_survives_host_deletion ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_hostname_not_confused_with_host ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_max_include_depth_matches_openssh ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_identity_file_and_proxy_jump ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_inline_comment_inside_quotes_preserved ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_split_include_patterns_quoted_no_spaces ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_split_include_patterns_quoted_with_spaces ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_multiple_hosts ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_split_include_patterns_single_unquoted ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_split_include_patterns_multiple_unquoted ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_inline_comment_outside_quotes_stripped ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_match_block_is_global_line ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_split_include_patterns_mixed ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_include_with_space_equals_separator ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_ssh_command ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_include_with_space_equals_space_separator ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_unicode_comment_no_panic ... ok
[INFO] [stdout] test ssh_config::writer::tests::test_add_host_serializes ... ok
[INFO] [stdout] test ssh_config::writer::tests::test_round_trip_basic ... ok
[INFO] [stdout] test ssh_config::writer::tests::test_delete_host_serializes ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_unicode_multibyte_line_no_panic ... ok
[INFO] [stdout] test ssh_config::writer::tests::test_round_trip_with_comments ... ok
[INFO] [stdout] test ssh_config::writer::tests::test_round_trip_with_globals_and_wildcards ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_unknown_directives_preserved ... ok
[INFO] [stdout] test ssh_config::writer::tests::test_update_host_preserves_unknown_directives ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_wildcard_host_filtered ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_bare_ipv6_remote ... ok
[INFO] [stdout] test tunnel::tests::display_ipv6_brackets ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_dynamic_empty_port ... ok
[INFO] [stdout] test tunnel::tests::display_local ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_dynamic_non_numeric ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_bind_port_0_rejected ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_dynamic_trailing_content ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_empty_bind_port ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_dynamic ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_empty_remote_host ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_error_dynamic_invalid_port_message ... ok
[INFO] [stdout] test ssh_config::writer::tests::test_update_host_serializes ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_error_bind_port_0_message ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_error_no_colon_message ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_error_remote_port_0_message ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_error_unknown_type_message ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_error_empty_remote_host_message ... ok
[INFO] [stdout] test tunnel::tests::display_dynamic ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_local ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_local_ipv6_remote ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_error_whitespace_in_remote_host ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_lowercase ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_multi_char_type ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_no_colons ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_port_overflow ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_remote_ipv6_remote ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_remote ... ok
[INFO] [stdout] test tunnel::tests::parse_dynamic_forward_port_only ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_remote_port_0_rejected ... ok
[INFO] [stdout] test tunnel::tests::parse_dynamic_forward_with_bind_address ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_invalid ... ok
[INFO] [stdout] test tunnel::tests::parse_empty_brackets ... ok
[INFO] [stdout] test ssh_config::model::tests::remove_forward_multi_pattern_host ... ok
[INFO] [stdout] test ssh_config::model::tests::set_stale_replaces_existing ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_hosts_no_stale ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_empty_config ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_missing_parts ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_extra_colons ... ok
[INFO] [stdout] test tunnel::tests::parse_empty_string ... ok
[INFO] [stdout] test tunnel::tests::parse_high_port_numbers ... ok
[INFO] [stdout] test tunnel::tests::parse_leading_trailing_whitespace ... ok
[INFO] [stdout] test tunnel::tests::parse_invalid_value_returns_none ... ok
[INFO] [stdout] test tunnel::tests::parse_local_forward_port_only ... ok
[INFO] [stdout] test tunnel::tests::parse_local_forward_with_bind_address ... ok
[INFO] [stdout] test tunnel::tests::parse_mismatched_bracket ... ok
[INFO] [stdout] test tunnel::tests::parse_missing_remote_host ... ok
[INFO] [stdout] test tunnel::tests::parse_ipv6_bind_address ... ok
[INFO] [stdout] test tunnel::tests::parse_port_0_accepted ... ok
[INFO] [stdout] test tunnel::tests::parse_port_1_minimum ... ok
[INFO] [stdout] test tunnel::tests::parse_single_word ... ok
[INFO] [stdout] test tunnel::tests::parse_tab_between_parts ... ok
[INFO] [stdout] test tunnel::tests::parse_missing_remote_port ... ok
[INFO] [stdout] test tunnel::tests::parse_port_65536_rejected ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_dynamic_with_bind ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_ipv6_bind ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_ipv6_dynamic ... ok
[INFO] [stdout] test tunnel::tests::parse_remote_forward ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_ipv6_remote ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_ipv6_both ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_local_forward ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_local_forward_with_bind ... ok
[INFO] [stdout] test tunnel::tests::parse_port_negative_rejected ... ok
[INFO] [stdout] test tunnel::tests::parse_multiple_spaces_between_parts ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_remote_forward_with_bind ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_askpass_all_source_types_trigger ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_remote_forward ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_askpass_empty_string_still_triggers ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_askpass_none_does_not_set_env ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_askpass_require_is_prefer ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_askpass_some_triggers_env_setup ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_does_not_set_bw_session ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_env_var_names_match_connection ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_sets_config_path_env ... ok
[INFO] [stdout] test tunnel::tests::to_directive_value_dynamic ... ok
[INFO] [stdout] test tunnel::tests::parse_unknown_directive_returns_none ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_dynamic_forward ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_uses_dash_n_flag ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_stdin_is_null ... ok
[INFO] [stdout] test tunnel::tests::to_directive_value_ipv6_bind ... ok
[INFO] [stdout] test tunnel::tests::to_directive_value_ipv6_both ... ok
[INFO] [stdout] test tunnel::tests::to_directive_value_ipv6_dynamic ... ok
[INFO] [stdout] test tunnel::tests::to_directive_value_local ... ok
[INFO] [stdout] test tunnel::tests::tunnel_type_cycle ... ok
[INFO] [stdout] test tunnel::tests::tunnel_type_from_directive_key ... ok
[INFO] [stdout] test tunnel::tests::to_directive_value_local_with_bind ... ok
[INFO] [stdout] test tunnel::tests::to_directive_value_ipv6_remote ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1482 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.38s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/purple-07f546d41fa33bb3)
[INFO] [stdout] 
[INFO] [stdout] running 2433 tests
[INFO] [stdout] test app::tests::test_add_host_from_form_calls_set_askpass ... ok
[INFO] [stdout] test app::tests::select_host_by_alias_normal_mode ... ok
[INFO] [stdout] test app::tests::select_host_by_alias_search_mode ... ok
[INFO] [stdout] test app::tests::test_add_host_config_mutation_without_askpass ... ok
[INFO] [stdout] test app::tests::select_host_by_alias_search_mode_not_in_results ... ok
[INFO] [stdout] test app::tests::test_apply_filter_empty_query ... ok
[INFO] [stdout] test app::tests::test_add_host_config_mutation_with_askpass ... ok
[INFO] [stdout] test app::tests::test_add_host_config_mutation_with_vault ... ok
[INFO] [stdout] test app::tests::test_apply_filter_matches_hostname ... ok
[INFO] [stdout] test app::tests::test_apply_filter_matches_alias ... ok
[INFO] [stdout] test app::tests::test_apply_sort_selects_first_in_sorted_order ... ok
[INFO] [stdout] test app::tests::test_apply_sort_preserves_selection_without_reset ... ok
[INFO] [stdout] test app::tests::test_apply_filter_no_matches ... ok
[INFO] [stdout] test app::tests::test_apply_sync_result_empty_hosts_returns_zero_total ... ok
[INFO] [stdout] test app::tests::test_askpass_fallback_per_host_takes_precedence ... ok
[INFO] [stdout] test app::tests::test_apply_sync_result_unknown_provider ... ok
[INFO] [stdout] test app::tests::test_askpass_field_between_proxyjump_and_tags ... ok
[INFO] [stdout] test app::tests::test_askpass_field_is_seventh_in_form ... ok
[INFO] [stdout] test app::tests::test_apply_sync_result_no_config ... ok
[INFO] [stdout] test app::tests::test_apply_sync_result_write_failure_preserves_total ... ok
[INFO] [stdout] test app::tests::test_askpass_fallback_uses_global_when_no_per_host ... ok
[INFO] [stdout] test app::tests::test_askpass_fallback_none_when_both_absent ... ok
[INFO] [stdout] test app::tests::test_askpass_field_label ... ok
[INFO] [stdout] test app::tests::test_askpass_field_navigation ... ok
[INFO] [stdout] test app::tests::test_build_display_list_blank_line_breaks_group ... ok
[INFO] [stdout] test app::tests::test_cleanup_marker_contract ... ok
[INFO] [stdout] test app::tests::test_build_display_list_with_group_headers ... ok
[INFO] [stdout] test app::tests::test_config_changed_since_form_open_detects_change ... ok
[INFO] [stdout] test app::tests::test_bw_session_cached_across_connections ... ok
[INFO] [stdout] test app::tests::test_collect_unique_tags_includes_provider_tags ... ok
[INFO] [stdout] test app::tests::test_config_changed_since_form_open_no_mtime ... ok
[INFO] [stdout] test app::tests::test_edit_askpass_rollback_restores_none ... ok
[INFO] [stdout] test app::tests::test_config_set_host_askpass_changes ... ok
[INFO] [stdout] test app::tests::test_config_set_host_askpass_adds ... ok
[INFO] [stdout] test app::tests::test_edit_host_from_form_sets_askpass_in_config ... ok
[INFO] [stdout] test app::tests::test_focused_value_mut_askpass ... ok
[INFO] [stdout] test app::tests::test_form_entry_roundtrip_all_sources ... ok
[INFO] [stdout] test app::tests::test_edit_askpass_rollback_restores_old_source ... ok
[INFO] [stdout] test app::tests::test_filter_tag_exact_stale ... ok
[INFO] [stdout] test app::tests::test_form_from_entry_with_askpass ... ok
[INFO] [stdout] test app::tests::test_filter_tag_fuzzy_stale ... ok
[INFO] [stdout] test app::tests::test_config_set_host_askpass_removes ... ok
[INFO] [stdout] test app::tests::test_form_from_entry_without_askpass ... ok
[INFO] [stdout] test app::tests::test_form_new_has_empty_askpass ... ok
[INFO] [stdout] test app::tests::test_form_field_all_includes_askpass ... ok
[INFO] [stdout] test app::tests::test_form_field_cycle_through_askpass ... ok
[INFO] [stdout] test app::tests::test_group_by_provider_creates_headers ... ok
[INFO] [stdout] test app::tests::test_group_by_provider_no_header_for_none ... ok
[INFO] [stdout] test app::tests::test_config_changed_since_form_open_same_mtime ... ok
[INFO] [stdout] test app::tests::test_group_by_provider_with_alpha_sort ... ok
[INFO] [stdout] test app::tests::test_host_entries_include_askpass ... ok
[INFO] [stdout] test app::tests::test_group_by_provider_toggle_off_restores_flat ... ok
[INFO] [stdout] test app::tests::test_host_entries_no_askpass ... ok
[INFO] [stdout] test app::tests::test_navigation_skips_headers ... ok
[INFO] [stdout] test app::tests::test_host_entries_vault_askpass ... ok
[INFO] [stdout] test app::tests::test_password_picker_initial_state_not_shown ... ok
[INFO] [stdout] test app::tests::test_pending_connect_askpass_from_host ... ok
[INFO] [stdout] test app::tests::test_pending_connect_none_askpass ... ok
[INFO] [stdout] test app::tests::test_password_picker_state_init ... ok
[INFO] [stdout] test app::tests::test_apply_sync_result_stale_in_message ... ok
[INFO] [stdout] test app::tests::test_apply_sync_result_with_hosts_returns_total ... ok
[INFO] [stdout] test app::tests::test_pending_connect_tuple_structure ... ok
[INFO] [stdout] test app::tests::test_pending_connect_with_askpass ... ok
[INFO] [stdout] test app::tests::test_provider_form_field_auto_sync_is_last_in_all_field_lists ... ok
[INFO] [stdout] test app::tests::test_pending_connect_without_askpass ... ok
[INFO] [stdout] test app::tests::test_select_first_host_with_hostname_sort ... ok
[INFO] [stdout] test app::tests::test_bw_session_not_set_for_non_bw ... ok
[INFO] [stdout] test app::tests::test_provider_form_field_cloud_fields_include_auto_sync ... ok
[INFO] [stdout] test app::tests::test_provider_form_field_label_auto_sync ... ok
[INFO] [stdout] test app::tests::test_select_next_password_source ... ok
[INFO] [stdout] test app::tests::test_provider_form_field_proxmox_fields_include_auto_sync_and_verify_tls ... ok
[INFO] [stdout] test app::tests::test_provider_form_fields_new_defaults ... ok
[INFO] [stdout] test app::tests::test_search_general_matches_provider_tags ... ok
[INFO] [stdout] test app::tests::test_search_tag_exact_matches_provider_tags ... ok
[INFO] [stdout] test app::tests::test_search_tag_fuzzy_matches_provider_tags ... ok
[INFO] [stdout] test app::tests::test_select_password_source_wrap_bottom ... ok
[INFO] [stdout] test app::tests::test_select_first_host_skips_group_header ... ok
[INFO] [stdout] test app::tests::test_sort_mode_round_trip ... ok
[INFO] [stdout] test app::tests::test_startup_auto_sync_filter_explicit_false_skips ... ok
[INFO] [stdout] test app::tests::test_startup_auto_sync_filter_all_enabled ... ok
[INFO] [stdout] test app::tests::test_select_password_source_wrap_top ... ok
[INFO] [stdout] test app::tests::test_startup_auto_sync_filter_skips_disabled_providers ... ok
[INFO] [stdout] test app::tests::test_select_prev_password_source ... ok
[INFO] [stdout] test app::tests::test_sync_history_cleared_on_provider_remove ... ok
[INFO] [stdout] test app::tests::test_to_entry_askpass_trimmed ... ok
[INFO] [stdout] test app::tests::test_sort_alpha_alias_stale_to_bottom ... ok
[INFO] [stdout] test app::tests::test_to_entry_parses_tags ... ok
[INFO] [stdout] test app::tests::test_sync_history_overwrite_replaces_error_with_success ... ok
[INFO] [stdout] test app::tests::test_sync_record_load_malformed_lines ... ok
[INFO] [stdout] test app::tests::test_to_entry_with_askpass_custom_command ... ok
[INFO] [stdout] test app::tests::test_sync_record_load_missing_file ... ok
[INFO] [stdout] test app::tests::test_to_entry_with_askpass_op ... ok
[INFO] [stdout] test app::tests::test_sync_record_save_load_roundtrip ... ok
[INFO] [stdout] test app::tests::test_to_entry_with_askpass_pass ... ok
[INFO] [stdout] test app::tests::test_to_entry_askpass_long_value ... ok
[INFO] [stdout] test app::tests::test_to_entry_with_askpass_vault ... ok
[INFO] [stdout] test app::tests::test_to_entry_askpass_with_equals_sign ... ok
[INFO] [stdout] test app::tests::test_to_entry_with_askpass_whitespace_only ... ok
[INFO] [stdout] test app::tests::test_validate_askpass_allows_normal_special_chars ... ok
[INFO] [stdout] test app::tests::test_validate_askpass_allows_percent_substitution ... ok
[INFO] [stdout] test app::tests::test_validate_askpass_rejects_newline ... ok
[INFO] [stdout] test app::tests::test_validate_askpass_normal_values_ok ... ok
[INFO] [stdout] test app::tests::test_validate_askpass_rejects_null_byte ... ok
[INFO] [stdout] test app::tests::test_to_entry_with_askpass_bw ... ok
[INFO] [stdout] test app::tests::test_to_entry_with_askpass_keychain ... ok
[INFO] [stdout] test app::tests::test_validate_askpass_rejects_tab ... ok
[INFO] [stdout] test app::tests::test_to_entry_with_askpass_empty ... ok
[INFO] [stdout] test app::tests::test_to_entry_askpass_with_hash ... ok
[INFO] [stdout] test app::tests::test_validate_empty_alias ... ok
[INFO] [stdout] test app::tests::test_validate_askpass_with_control_char ... ok
[INFO] [stdout] test app::tests::test_validate_empty_hostname ... ok
[INFO] [stdout] test app::tests::test_validate_rejects_hash_in_alias ... ok
[INFO] [stdout] test app::tests::test_validate_valid_form ... ok
[INFO] [stdout] test app::tests::test_validate_pattern_alias ... ok
[INFO] [stdout] test app::tests::tunnel_form_field_next_dynamic_skips_remote ... ok
[INFO] [stdout] test app::tests::tunnel_form_from_rule_dynamic ... ok
[INFO] [stdout] test app::tests::tunnel_form_from_rule_ipv6_bind_address ... ok
[INFO] [stdout] test app::tests::tunnel_form_from_rule_local ... ok
[INFO] [stdout] test app::tests::tunnel_form_from_rule_with_bind_address ... ok
[INFO] [stdout] test app::tests::tunnel_form_to_directive_local ... ok
[INFO] [stdout] test app::tests::tunnel_form_to_directive_remote ... ok
[INFO] [stdout] test app::tests::test_validate_rejects_control_chars ... ok
[INFO] [stdout] test app::tests::tunnel_form_to_directive_dynamic ... ok
[INFO] [stdout] test app::tests::test_validate_whitespace_alias ... ok
[INFO] [stdout] test app::tests::tunnel_form_validate_bad_bind_port ... ok
[INFO] [stdout] test app::tests::test_validate_invalid_port ... ok
[INFO] [stdout] test app::tests::tunnel_form_field_prev_local ... ok
[INFO] [stdout] test app::tests::tunnel_form_validate_bad_remote_port ... ok
[INFO] [stdout] test app::tests::tunnel_form_validate_control_chars ... ok
[INFO] [stdout] test app::tests::tunnel_form_field_prev_dynamic_skips_remote ... ok
[INFO] [stdout] test app::tests::test_validate_port_zero ... ok
[INFO] [stdout] test app::tests::tunnel_form_field_next_local ... ok
[INFO] [stdout] test app::tests::tunnel_form_validate_spaces_in_remote_host ... ok
[INFO] [stdout] test app::tests::tunnel_form_validate_dynamic_skips_remote ... ok
[INFO] [stdout] test app::tests::tunnel_form_validate_valid ... ok
[INFO] [stdout] test app::tests::tunnel_form_validate_zero_bind_port ... ok
[INFO] [stdout] test app::tests::tunnel_form_validate_zero_remote_port ... ok
[INFO] [stdout] test app::tests::tunnel_form_validate_empty_bind_port ... ok
[INFO] [stdout] test app::tests::tunnel_validate_remote_host_empty_message ... ok
[INFO] [stdout] test askpass::tests::bw_session_needed_for_bw_source ... ok
[INFO] [stdout] test app::tests::tunnel_form_validate_empty_remote_host ... ok
[INFO] [stdout] test askpass::tests::bw_session_not_needed_for_bw_prefix_without_colon ... ok
[INFO] [stdout] test app::tests::tunnel_validate_bind_port_non_numeric_message ... ok
[INFO] [stdout] test app::tests::tunnel_validate_remote_host_whitespace_message ... ok
[INFO] [stdout] test askpass::tests::bw_session_not_needed_for_pass ... ok
[INFO] [stdout] test askpass::tests::bw_session_not_needed_for_keychain ... ok
[INFO] [stdout] test app::tests::validate_hostname_with_control_chars_rejected ... ok
[INFO] [stdout] test askpass::tests::bw_session_not_needed_for_vault ... ok
[INFO] [stdout] test app::tests::tunnel_validate_remote_port_zero_message ... ok
[INFO] [stdout] test app::tests::validate_hostname_whitespace_rejected ... ok
[INFO] [stdout] test app::tests::validate_user_whitespace_rejected ... ok
[INFO] [stdout] test askpass::tests::bw_session_not_needed_when_already_cached ... ok
[INFO] [stdout] test askpass::tests::bw_session_not_needed_when_no_askpass ... ok
[INFO] [stdout] test askpass::tests::bw_status_parse_empty_output ... ok
[INFO] [stdout] test askpass::tests::bw_session_not_needed_for_custom_command ... ok
[INFO] [stdout] test app::tests::tunnel_validate_bind_port_zero_message ... ok
[INFO] [stdout] test askpass::tests::bw_session_not_needed_for_op ... ok
[INFO] [stdout] test askpass::tests::bw_status_parse_empty_status_value ... ok
[INFO] [stdout] test askpass::tests::bw_status_parse_malformed_json ... ok
[INFO] [stdout] test askpass::tests::bw_status_parse_missing_status_key ... ok
[INFO] [stdout] test askpass::tests::bw_status_parse_unauthenticated ... ok
[INFO] [stdout] test askpass::tests::bw_status_parse_locked ... ok
[INFO] [stdout] test askpass::tests::bw_status_parse_unknown_status_defaults_to_locked ... ok
[INFO] [stdout] test askpass::tests::bw_status_parse_unlocked ... ok
[INFO] [stdout] test askpass::tests::bw_status_parse_with_extra_fields ... ok
[INFO] [stdout] test askpass::tests::bw_status_parse_with_whitespace ... ok
[INFO] [stdout] test askpass::tests::bw_unlock_password_via_env_not_args ... ok
[INFO] [stdout] test askpass::tests::bw_unlock_valid_token_check ... ok
[INFO] [stdout] test askpass::tests::cleanup_marker_noop_for_nonexistent ... ok
[INFO] [stdout] test askpass::tests::command_substitution ... ok
[INFO] [stdout] test askpass::tests::command_substitution_special_chars_in_hostname ... ok
[INFO] [stdout] test askpass::tests::command_substitution_only_percent_h ... ok
[INFO] [stdout] test askpass::tests::describe_source_bw_colon_required ... ok
[INFO] [stdout] test askpass::tests::describe_source_bw_minimal ... ok
[INFO] [stdout] test askpass::tests::describe_source_custom ... ok
[INFO] [stdout] test askpass::tests::describe_source_keychain ... ok
[INFO] [stdout] test askpass::tests::describe_source_keychain_prefix_not_op ... ok
[INFO] [stdout] test askpass::tests::describe_source_matches_password_sources_labels ... ok
[INFO] [stdout] test askpass::tests::describe_source_empty_string_is_custom ... ok
[INFO] [stdout] test askpass::tests::describe_source_op_minimal ... ok
[INFO] [stdout] test askpass::tests::describe_source_pass ... ok
[INFO] [stdout] test askpass::tests::describe_source_pass_colon_required ... ok
[INFO] [stdout] test askpass::tests::describe_source_random_command_is_custom ... ok
[INFO] [stdout] test askpass::tests::describe_source_op_requires_double_slash ... ok
[INFO] [stdout] test askpass::tests::describe_source_vault ... ok
[INFO] [stdout] test askpass::tests::describe_source_vault_colon_required ... ok
[INFO] [stdout] test askpass::tests::describe_source_vault_no_field ... ok
[INFO] [stdout] test askpass::tests::describe_source_vault_with_complex_path ... ok
[INFO] [stdout] test askpass::tests::ensure_bw_session_first_attempt_says_try_again ... ok
[INFO] [stdout] test askpass::tests::ensure_bw_session_retry_count_is_two ... ok
[INFO] [stdout] test askpass::tests::describe_source_with_exact_picker_values ... ok
[INFO] [stdout] test askpass::tests::ensure_bw_session_second_attempt_says_ssh_will_prompt ... ok
[INFO] [stdout] test askpass::tests::command_substitution_empty_alias ... ok
[INFO] [stdout] test askpass::tests::ensure_bw_session_status_not_installed_returns_none ... ok
[INFO] [stdout] test askpass::tests::command_substitution_multiple_occurrences ... ok
[INFO] [stdout] test askpass::tests::ensure_bw_session_status_locked_needs_prompt ... ok
[INFO] [stdout] test askpass::tests::command_substitution_no_placeholders ... ok
[INFO] [stdout] test askpass::tests::cleanup_marker_removes_file ... ok
[INFO] [stdout] test askpass::tests::ensure_bw_session_status_not_authenticated_returns_none ... ok
[INFO] [stdout] test askpass::tests::bw_unlock_empty_token_check_logic ... ok
[INFO] [stdout] test askpass::tests::ensure_bw_session_status_unlocked_returns_none ... ok
[INFO] [stdout] test askpass::tests::command_substitution_only_percent_a ... ok
[INFO] [stdout] test askpass::tests::bw_unlock_whitespace_only_token_check ... ok
[INFO] [stdout] test askpass::tests::describe_source_1password ... ok
[INFO] [stdout] test askpass::tests::describe_source_bitwarden ... ok
[INFO] [stdout] test askpass::tests::find_askpass_source_custom_command ... ok
[INFO] [stdout] test askpass::tests::find_askpass_source_bw_source ... ok
[INFO] [stdout] test askpass::tests::find_askpass_source_pass_source ... ok
[INFO] [stdout] test askpass::tests::find_askpass_source_multiple_hosts_returns_correct ... ok
[INFO] [stdout] test askpass::tests::find_askpass_source_per_host_takes_precedence ... ok
[INFO] [stdout] test askpass::tests::find_askpass_source_op_uri ... ok
[INFO] [stdout] test askpass::tests::find_askpass_source_returns_per_host_source ... ok
[INFO] [stdout] test askpass::tests::find_askpass_source_works_for_any_host ... ok
[INFO] [stdout] test askpass::tests::find_askpass_source_returns_vault ... ok
[INFO] [stdout] test askpass::tests::find_hostname_no_hostname_directive ... ok
[INFO] [stdout] test askpass::tests::find_hostname_returns_correct_for_multiple_hosts ... ok
[INFO] [stdout] test askpass::tests::find_hostname_returns_hostname ... ok
[INFO] [stdout] test askpass::tests::find_hostname_returns_alias_when_not_found ... ok
[INFO] [stdout] test askpass::tests::handle_exits_when_no_source_found ... ok
[INFO] [stdout] test askpass::tests::handle_proceeds_when_both_set ... ok
[INFO] [stdout] test askpass::tests::handle_requires_both_env_vars ... ok
[INFO] [stdout] test askpass::tests::is_recent_marker_returns_false_for_nonexistent ... ok
[INFO] [stdout] test askpass::tests::describe_source_pass_minimal ... ok
[INFO] [stdout] test askpass::tests::is_recent_marker_returns_true_for_fresh_file ... ok
[INFO] [stdout] test askpass::tests::find_hostname_with_askpass_host ... ok
[INFO] [stdout] test askpass::tests::describe_source_vault_minimal ... ok
[INFO] [stdout] test askpass::tests::find_askpass_source_returns_none_when_absent ... ok
[INFO] [stdout] test askpass::tests::keychain_is_not_prefix ... ok
[INFO] [stdout] test askpass::tests::included_host_askpass_is_readable ... ok
[INFO] [stdout] test askpass::tests::keychain_service_name_is_purple_ssh ... ok
[INFO] [stdout] test askpass::tests::marker_path_contains_alias ... ok
[INFO] [stdout] test askpass::tests::find_askpass_source_wrong_alias_returns_nothing ... ok
[INFO] [stdout] test askpass::tests::pass_first_line_single_line ... ok
[INFO] [stdout] test askpass::tests::pass_first_line_trailing_newline ... ok
[INFO] [stdout] test askpass::tests::password_command_remove_success_message_format ... ok
[INFO] [stdout] test askpass::tests::marker_path_is_in_dot_purple_dir ... ok
[INFO] [stdout] test askpass::tests::password_command_set_accepts_non_empty_password ... ok
[INFO] [stdout] test askpass::tests::marker_path_special_chars_in_alias ... ok
[INFO] [stdout] test askpass::tests::password_command_set_rejects_empty_password ... ok
[INFO] [stdout] test askpass::tests::password_command_set_success_message_format ... ok
[INFO] [stdout] test askpass::tests::op_uri_strip_preserves_complex_paths ... ok
[INFO] [stdout] test askpass::tests::op_uri_strip_preserves_special_chars ... ok
[INFO] [stdout] test askpass::tests::pass_first_line_empty ... ok
[INFO] [stdout] test askpass::tests::pass_first_line_multiline ... ok
[INFO] [stdout] test askpass::tests::password_sources_1password_value ... ok
[INFO] [stdout] test askpass::tests::password_sources_bitwarden_value ... ok
[INFO] [stdout] test askpass::tests::pass_first_line_newline_only ... ok
[INFO] [stdout] test askpass::tests::op_uri_strip_and_reconstruct_is_identity ... ok
[INFO] [stdout] test askpass::tests::password_sources_custom_command_value ... ok
[INFO] [stdout] test askpass::tests::preferences_parser_preserves_special_chars_in_value ... ok
[INFO] [stdout] test askpass::tests::password_sources_hints_non_empty ... ok
[INFO] [stdout] test askpass::tests::password_sources_count ... ok
[INFO] [stdout] test askpass::tests::password_sources_keychain_is_first ... ok
[INFO] [stdout] test askpass::tests::password_sources_labels_unique ... ok
[INFO] [stdout] test askpass::tests::password_sources_none_empty_value ... ok
[INFO] [stdout] test askpass::tests::password_sources_none_is_last ... ok
[INFO] [stdout] test askpass::tests::password_sources_pass_value ... ok
[INFO] [stdout] test askpass::tests::password_sources_vault_value ... ok
[INFO] [stdout] test askpass::tests::preferences_parser_extracts_askpass ... ok
[INFO] [stdout] test askpass::tests::preferences_parser_first_askpass_wins ... ok
[INFO] [stdout] test askpass::tests::preferences_parser_handles_value_with_equals_sign ... ok
[INFO] [stdout] test askpass::tests::preferences_parser_returns_none_when_absent ... ok
[INFO] [stdout] test askpass::tests::preferences_parser_returns_none_for_empty_value ... ok
[INFO] [stdout] test askpass::tests::preferences_parser_trims_whitespace_around_equals ... ok
[INFO] [stdout] test askpass::tests::prompt_allows_empty ... ok
[INFO] [stdout] test askpass::tests::prefix_sources_end_with_colon_or_slash ... ok
[INFO] [stdout] test askpass::tests::preferences_parser_returns_none_for_whitespace_only_value ... ok
[INFO] [stdout] test askpass::tests::prompt_allows_password_prompt ... ok
[INFO] [stdout] test askpass::tests::password_sources_order_matches_routing ... ok
[INFO] [stdout] test askpass::tests::prompt_filter_rsa_passphrase ... ok
[INFO] [stdout] test askpass::tests::prompt_filtering_host_key ... ok
[INFO] [stdout] test askpass::tests::prompt_filtering_host_key_fingerprint ... ok
[INFO] [stdout] test askpass::tests::preferences_parser_skips_comments ... ok
[INFO] [stdout] test askpass::tests::prompt_filter_host_key_yes_no ... ok
[INFO] [stdout] test askpass::tests::prompt_filtering_passphrase ... ok
[INFO] [stdout] test askpass::tests::prompt_filter_host_key_yes_no_fingerprint ... ok
[INFO] [stdout] test askpass::tests::prompt_password_not_filtered ... ok
[INFO] [stdout] test askpass::tests::remove_keychain_linux_uses_secret_tool_clear ... ok
[INFO] [stdout] test askpass::tests::prompt_filter_keyboard_interactive ... ok
[INFO] [stdout] test askpass::tests::prompt_filter_case_insensitive_passphrase ... ok
[INFO] [stdout] test askpass::tests::retrieve_error_messages_are_descriptive ... ok
[INFO] [stdout] test askpass::tests::retrieve_keychain_linux_uses_secret_tool_lookup ... ok
[INFO] [stdout] test askpass::tests::preferences_parser_skips_empty_lines ... ok
[INFO] [stdout] test askpass::tests::retrieve_password_routes_bitwarden ... ok
[INFO] [stdout] test askpass::tests::retrieve_password_routes_keychain ... ok
[INFO] [stdout] test askpass::tests::retrieve_password_routes_op ... ok
[INFO] [stdout] test askpass::tests::prompt_filter_ed25519_passphrase ... ok
[INFO] [stdout] test askpass::tests::prompt_allows_generic_password ... ok
[INFO] [stdout] test askpass::tests::retrieve_password_routes_pass ... ok
[INFO] [stdout] test askpass::tests::prompt_allows_password_prompt_root ... ok
[INFO] [stdout] test askpass::tests::retrieve_routing_bw_strip_prefix ... ok
[INFO] [stdout] test askpass::tests::retrieve_password_routes_vault ... ok
[INFO] [stdout] test askpass::tests::retrieve_routing_keychain_exact_match ... ok
[INFO] [stdout] test askpass::tests::retrieve_routing_op_strip_prefix ... ok
[INFO] [stdout] test askpass::tests::retrieve_routing_pass_strip_prefix ... ok
[INFO] [stdout] test askpass::tests::retrieve_routing_priority_order ... ok
[INFO] [stdout] test askpass::tests::retrieve_routing_vault_strip_prefix ... ok
[INFO] [stdout] test askpass::tests::routing_all_password_sources_have_backend ... ok
[INFO] [stdout] test askpass::tests::routing_keychain_does_not_match_prefix ... ok
[INFO] [stdout] test askpass::tests::retry_marker_lifecycle_create_then_detect ... ok
[INFO] [stdout] test askpass::tests::keychain_has_password_returns_bool ... ok
[INFO] [stdout] test askpass::tests::routing_op_single_slash_is_command ... ok
[INFO] [stdout] test askpass::tests::retrieve_routing_custom_command_no_prefix ... ok
[INFO] [stdout] test askpass::tests::routing_vault_without_colon_is_command ... ok
[INFO] [stdout] test askpass::tests::vault_spec_deep_path ... ok
[INFO] [stdout] test askpass::tests::vault_spec_multiple_hashes ... ok
[INFO] [stdout] test askpass::tests::store_keychain_linux_uses_secret_tool ... ok
[INFO] [stdout] test askpass::tests::vault_spec_trailing_hash ... ok
[INFO] [stdout] test askpass::tests::vault_spec_with_field ... ok
[INFO] [stdout] test askpass::tests::vault_spec_field_at_right_of_last_hash ... ok
[INFO] [stdout] test connection::tests::active_tunnel_adds_clear_all_forwardings ... ok
[INFO] [stdout] test connection::tests::askpass_and_bw_session_both_set ... ok
[INFO] [stdout] test askpass::tests::vault_spec_without_field ... ok
[INFO] [stdout] test connection::tests::askpass_env_var_names ... ok
[INFO] [stdout] test connection::tests::bw_session_env_set_when_some ... ok
[INFO] [stdout] test connection::tests::askpass_none_does_not_set_env ... ok
[INFO] [stdout] test connection::tests::askpass_some_triggers_env ... ok
[INFO] [stdout] test connection::tests::bw_session_env_not_set_when_none ... ok
[INFO] [stdout] test connection::tests::askpass_without_bw_session ... ok
[INFO] [stdout] test connection::tests::connection_env_vars_include_config_path ... ok
[INFO] [stdout] test connection::tests::connection_exe_fallback_chain ... ok
[INFO] [stdout] test connection::tests::connection_inherits_stdin_and_stdout ... ok
[INFO] [stdout] test connection::tests::connection_uses_double_dash_before_alias ... ok
[INFO] [stdout] test connection::tests::parse_host_key_error_detects_changed_key ... ok
[INFO] [stdout] test connection::tests::parse_host_key_error_handles_ip_address ... ok
[INFO] [stdout] test connection::tests::parse_host_key_error_handles_ipv6 ... ok
[INFO] [stdout] test connection::tests::no_tunnel_omits_clear_all_forwardings ... ok
[INFO] [stdout] test connection::tests::parse_host_key_error_returns_none_for_empty ... ok
[INFO] [stdout] test connection::tests::parse_host_key_error_returns_none_for_other_errors ... ok
[INFO] [stdout] test connection::tests::purple_askpass_mode_value_is_one ... ok
[INFO] [stdout] test connection::tests::ssh_askpass_require_value_is_prefer ... ok
[INFO] [stdout] test containers::tests::action_as_str ... ok
[INFO] [stdout] test containers::tests::action_command_all_combinations ... ok
[INFO] [stdout] test containers::tests::action_command_long_id ... ok
[INFO] [stdout] test connection::tests::connection_all_askpass_source_types_trigger_env ... ok
[INFO] [stdout] test containers::tests::cache_parse_empty ... ok
[INFO] [stdout] test containers::tests::cache_duplicate_alias_last_wins ... ok
[INFO] [stdout] test containers::tests::cache_parse_malformed_ignored ... ok
[INFO] [stdout] test connection::tests::parse_host_key_error_handles_custom_known_hosts_path ... ok
[INFO] [stdout] test containers::tests::cache_parse_multiple_hosts ... ok
[INFO] [stdout] test containers::tests::cache_round_trip_podman ... ok
[INFO] [stdout] test containers::tests::container_action_copy ... ok
[INFO] [stdout] test containers::tests::cache_round_trip ... ok
[INFO] [stdout] test containers::tests::container_runtime_copy ... ok
[INFO] [stdout] test containers::tests::cache_serde_unknown_runtime_rejected ... ok
[INFO] [stdout] test containers::tests::container_error_display ... ok
[INFO] [stdout] test containers::tests::format_relative_time_boundary_3600s ... ok
[INFO] [stdout] test containers::tests::format_relative_time_boundary_60s ... ok
[INFO] [stdout] test containers::tests::format_relative_time_boundary_86400s ... ok
[INFO] [stdout] test containers::tests::friendly_error_case_insensitive ... ok
[INFO] [stdout] test containers::tests::friendly_error_connection_refused ... ok
[INFO] [stdout] test containers::tests::friendly_error_empty_stderr ... ok
[INFO] [stdout] test containers::tests::friendly_error_command_not_found ... ok
[INFO] [stdout] test containers::tests::friendly_error_network_unreachable ... ok
[INFO] [stdout] test containers::tests::friendly_error_none_exit_code ... ok
[INFO] [stdout] test containers::tests::friendly_error_no_route ... ok
[INFO] [stdout] test containers::tests::friendly_error_daemon_not_running ... ok
[INFO] [stdout] test containers::tests::friendly_error_unknown_stderr_uses_generic_message ... ok
[INFO] [stdout] test containers::tests::id_ampersand_rejected ... ok
[INFO] [stdout] test containers::tests::id_angle_brackets_rejected ... ok
[INFO] [stdout] test containers::tests::friendly_error_permission_denied ... ok
[INFO] [stdout] test containers::tests::id_colon_rejected ... ok
[INFO] [stdout] test containers::tests::id_full_sha256 ... ok
[INFO] [stdout] test containers::tests::id_empty ... ok
[INFO] [stdout] test containers::tests::friendly_error_podman_daemon ... ok
[INFO] [stdout] test containers::tests::id_injection_pipe ... ok
[INFO] [stdout] test containers::tests::id_injection_dollar ... ok
[INFO] [stdout] test containers::tests::id_injection_semicolon ... ok
[INFO] [stdout] test containers::tests::id_injection_backtick ... ok
[INFO] [stdout] test containers::tests::id_just_dash ... ok
[INFO] [stdout] test containers::tests::id_slash_rejected ... ok
[INFO] [stdout] test containers::tests::id_parentheses_rejected ... ok
[INFO] [stdout] test containers::tests::id_just_dot ... ok
[INFO] [stdout] test containers::tests::id_unicode_rejected ... ok
[INFO] [stdout] test containers::tests::id_valid_hex ... ok
[INFO] [stdout] test containers::tests::id_space ... ok
[INFO] [stdout] test containers::tests::id_valid_names ... ok
[INFO] [stdout] test containers::tests::list_cmd_docker ... ok
[INFO] [stdout] test containers::tests::list_cmd_none_valid_shell_syntax ... ok
[INFO] [stdout] test containers::tests::list_cmd_podman ... ok
[INFO] [stdout] test containers::tests::id_newline ... ok
[INFO] [stdout] test containers::tests::output_empty_container_list ... ok
[INFO] [stdout] test containers::tests::output_caller_runtime_podman ... ok
[INFO] [stdout] test containers::tests::output_docker_sentinel ... ok
[INFO] [stdout] test containers::tests::output_no_sentinel_with_caller ... ok
[INFO] [stdout] test containers::tests::output_motd_before_sentinel ... ok
[INFO] [stdout] test containers::tests::output_sentinel_none_on_last_line ... ok
[INFO] [stdout] test containers::tests::output_no_sentinel_no_caller ... ok
[INFO] [stdout] test containers::tests::output_multiple_containers ... ok
[INFO] [stdout] test containers::tests::output_sentinel_with_crlf ... ok
[INFO] [stdout] test containers::tests::output_none_sentinel ... ok
[INFO] [stdout] test containers::tests::list_cmd_none_docker_first ... ok
[INFO] [stdout] test containers::tests::list_cmd_none_has_sentinels ... ok
[INFO] [stdout] test containers::tests::parse_ps_compose_names ... ok
[INFO] [stdout] test containers::tests::parse_ps_all_docker_states ... ok
[INFO] [stdout] test containers::tests::parse_ps_crlf_line_endings ... ok
[INFO] [stdout] test containers::tests::container_error_debug ... ok
[INFO] [stdout] test containers::tests::container_error_display_no_runtime ... ok
[INFO] [stdout] test containers::tests::output_podman_sentinel ... ok
[INFO] [stdout] test containers::tests::parse_ps_invalid_lines_ignored ... ok
[INFO] [stdout] test containers::tests::parse_ps_empty ... ok
[INFO] [stdout] test containers::tests::parse_ps_leading_whitespace_json ... ok
[INFO] [stdout] test containers::tests::relative_hours ... ok
[INFO] [stdout] test containers::tests::parse_ps_long_ports ... ok
[INFO] [stdout] test containers::tests::relative_just_now ... ok
[INFO] [stdout] test containers::tests::relative_minutes ... ok
[INFO] [stdout] test containers::tests::relative_time_unix_epoch ... ok
[INFO] [stdout] test containers::tests::runtime_as_str ... ok
[INFO] [stdout] test containers::tests::parse_ps_multiple ... ok
[INFO] [stdout] test containers::tests::parse_ps_sha256_image ... ok
[INFO] [stdout] test containers::tests::parse_ps_single ... ok
[INFO] [stdout] test containers::tests::parse_ps_trailing_newline ... ok
[INFO] [stdout] test containers::tests::parse_ps_whitespace_only_lines_between_json ... ok
[INFO] [stdout] test containers::tests::parse_runtime_crlf ... ok
[INFO] [stdout] test containers::tests::parse_runtime_empty_lines_between_motd ... ok
[INFO] [stdout] test containers::tests::relative_days ... ok
[INFO] [stdout] test containers::tests::output_sentinel_on_last_line ... ok
[INFO] [stdout] test containers::tests::output_unknown_sentinel ... ok
[INFO] [stdout] test containers::tests::output_sentinel_indented ... ok
[INFO] [stdout] test containers::tests::relative_future_saturates ... ok
[INFO] [stdout] test containers::tests::runtime_docker ... ok
[INFO] [stdout] test containers::tests::runtime_motd_prepended ... ok
[INFO] [stdout] test containers::tests::runtime_none ... ok
[INFO] [stdout] test containers::tests::runtime_podman ... ok
[INFO] [stdout] test containers::tests::runtime_trailing_whitespace ... ok
[INFO] [stdout] test containers::tests::truncate_ascii_boundary ... ok
[INFO] [stdout] test containers::tests::truncate_emoji ... ok
[INFO] [stdout] test containers::tests::truncate_empty ... ok
[INFO] [stdout] test containers::tests::truncate_exact ... ok
[INFO] [stdout] test containers::tests::truncate_long ... ok
[INFO] [stdout] test containers::tests::truncate_max_one ... ok
[INFO] [stdout] test containers::tests::truncate_multibyte ... ok
[INFO] [stdout] test containers::tests::truncate_multibyte_utf8 ... ok
[INFO] [stdout] test containers::tests::truncate_short ... ok
[INFO] [stdout] test containers::tests::truncate_unicode_within_limit ... ok
[INFO] [stdout] test file_browser::tests::test_approximate_epoch_leap_year ... ok
[INFO] [stdout] test file_browser::tests::test_build_scp_args_download ... ok
[INFO] [stdout] test file_browser::tests::test_build_scp_args_spaces_in_path ... ok
[INFO] [stdout] test file_browser::tests::test_build_scp_args_with_dirs ... ok
[INFO] [stdout] test file_browser::tests::test_epoch_to_year ... ok
[INFO] [stdout] test file_browser::tests::test_filter_ssh_warnings_empty ... ok
[INFO] [stdout] test file_browser::tests::test_filter_ssh_warnings_filters_warnings ... ok
[INFO] [stdout] test file_browser::tests::test_filter_ssh_warnings_lowercase_see_https ... ok
[INFO] [stdout] test file_browser::tests::test_filter_ssh_warnings_only_warnings ... ok
[INFO] [stdout] test file_browser::tests::test_epoch_to_year_2100_boundary ... ok
[INFO] [stdout] test file_browser::tests::test_filter_ssh_warnings_keeps_plain_error ... ok
[INFO] [stdout] test file_browser::tests::test_format_relative_time_future ... ok
[INFO] [stdout] test file_browser::tests::test_format_relative_time_old_date ... ok
[INFO] [stdout] test file_browser::tests::test_filter_ssh_warnings_warning_prefix ... ok
[INFO] [stdout] test file_browser::tests::test_format_short_date_different_year ... ok
[INFO] [stdout] test file_browser::tests::test_format_relative_time_ranges ... ok
[INFO] [stdout] test file_browser::tests::test_format_size ... ok
[INFO] [stdout] test file_browser::tests::test_format_short_date_leap_year ... ok
[INFO] [stdout] test containers::tests::runtime_motd_after_output ... ok
[INFO] [stdout] test file_browser::tests::test_format_relative_time_exactly_60s ... ok
[INFO] [stdout] test containers::tests::truncate_max_two ... ok
[INFO] [stdout] test file_browser::tests::test_approximate_epoch_known_dates ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_date_invalid_day ... ok
[INFO] [stdout] test file_browser::tests::test_build_scp_args_upload ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_date_invalid_month ... ok
[INFO] [stdout] test file_browser::tests::test_list_local_hidden ... ok
[INFO] [stdout] test file_browser::tests::test_list_local_populates_modified ... ok
[INFO] [stdout] test file_browser::tests::test_parse_human_size ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_date_invalid_year ... ok
[INFO] [stdout] test file_browser::tests::test_list_local_sorts_dirs_first ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_basic ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_filename_with_spaces ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_date_old_format ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_empty ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_date_midnight ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_output_date_sort ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_output_date_asc_sort ... ok
[INFO] [stdout] test file_browser::tests::test_shell_escape_with_single_quote ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_output_date_sort_with_dirs ... ok
[INFO] [stdout] test file_browser::tests::test_shell_escape_with_spaces ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_date_recent_format ... ok
[INFO] [stdout] test file_browser::tests::test_sort_entries_date_asc_oldest_first ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_symlink_to_dir_dereferenced ... ok
[INFO] [stdout] test file_browser::tests::test_sort_entries_date_multiple_dirs ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_hidden_filter ... ok
[INFO] [stdout] test file_browser::tests::test_sort_entries_date_asc_none_modified_sorts_to_end ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_symlink_to_file_dereferenced ... ok
[INFO] [stdout] test file_browser::tests::test_shell_escape_simple ... ok
[INFO] [stdout] test file_browser::tests::test_parse_ls_output_populates_modified ... ok
[INFO] [stdout] test file_browser::tests::test_sort_entries_date_dirs_first_newest_first ... ok
[INFO] [stdout] test file_browser::tests::test_sort_entries_name_mode ... ok
[INFO] [stdout] test handler::tests::test_askpass_placeholder_text ... ok
[INFO] [stdout] test handler::tests::test_azure_form_tab_cycles_through_regions ... ok
[INFO] [stdout] test handler::tests::test_askpass_unicode_in_custom_command ... ok
[INFO] [stdout] test handler::tests::test_azure_regions_field_accepts_typing ... ok
[INFO] [stdout] test handler::tests::test_azure_form_has_regions_field ... ok
[INFO] [stdout] test file_browser::tests::test_sort_entries_date_with_none_modified ... ok
[INFO] [stdout] test handler::tests::test_bw_session_none_for_non_bw_source ... ok
[INFO] [stdout] test handler::tests::test_bw_session_stored_in_app ... ok
[INFO] [stdout] test handler::tests::test_connect_mode_askpass_lookup ... ok
[INFO] [stdout] test handler::tests::test_connect_mode_askpass_none ... ok
[INFO] [stdout] test handler::tests::test_connect_mode_nonexistent_host ... ok
[INFO] [stdout] test handler::tests::test_container_confirm_action_question_opens_help ... ok
[INFO] [stdout] test handler::tests::test_all_cloud_providers_default_auto_sync_true ... ok
[INFO] [stdout] test handler::tests::test_confirm_import_uppercase_y_works ... ok
[INFO] [stdout] test handler::tests::test_containers_action_blocked_when_in_progress ... ok
[INFO] [stdout] test handler::tests::test_containers_action_no_selection_noop ... ok
[INFO] [stdout] test handler::tests::test_azure_enter_on_regions_does_not_open_picker ... ok
[INFO] [stdout] test handler::tests::test_containers_esc_closes ... ok
[INFO] [stdout] test handler::tests::test_containers_help_esc_returns ... ok
[INFO] [stdout] test handler::tests::test_clear_askpass_with_backspace ... ok
[INFO] [stdout] test handler::tests::test_containers_j_empty_noop ... ok
[INFO] [stdout] test handler::tests::test_containers_j_moves_down ... ok
[INFO] [stdout] test handler::tests::test_containers_j_wraps ... ok
[INFO] [stdout] test handler::tests::test_containers_esc_cancels_confirmation ... ok
[INFO] [stdout] test handler::tests::test_containers_k_empty_noop ... ok
[INFO] [stdout] test handler::tests::test_backspace_after_prefix_selection ... ok
[INFO] [stdout] test handler::tests::test_containers_page_up ... ok
[INFO] [stdout] test handler::tests::test_containers_k_moves_up ... ok
[INFO] [stdout] test handler::tests::test_containers_k_wraps ... ok
[INFO] [stdout] test handler::tests::test_containers_page_down ... ok
[INFO] [stdout] test handler::tests::test_containers_q_closes ... ok
[INFO] [stdout] test handler::tests::test_containers_r_blocked_when_action_in_progress ... ok
[INFO] [stdout] test handler::tests::test_containers_r_shows_confirmation ... ok
[INFO] [stdout] test handler::tests::test_containers_question_opens_help ... ok
[INFO] [stdout] test handler::tests::test_containers_r_uppercase_blocked_when_in_progress ... ok
[INFO] [stdout] test handler::tests::test_containers_r_uppercase_refreshes ... ok
[INFO] [stdout] test handler::tests::test_containers_unknown_key_noop ... ok
[INFO] [stdout] test handler::tests::test_containers_s_sets_action_in_progress ... ok
[INFO] [stdout] test handler::tests::test_containers_x_blocked_when_confirm_pending ... ok
[INFO] [stdout] test handler::tests::test_containers_x_shows_confirmation ... ok
[INFO] [stdout] test handler::tests::test_containers_x_blocked_when_action_in_progress ... ok
[INFO] [stdout] test handler::tests::test_containers_y_confirms_action ... ok
[INFO] [stdout] test handler::tests::test_containers_y_noop_without_pending ... ok
[INFO] [stdout] test handler::tests::test_d_key_warns_on_stale_host ... ok
[INFO] [stdout] test handler::tests::test_delete_undo_preserves_askpass_in_config ... ok
[INFO] [stdout] test handler::tests::test_e_key_opens_edit_form_with_askpass ... ok
[INFO] [stdout] test handler::tests::test_containers_r_blocked_when_confirm_pending ... ok
[INFO] [stdout] test handler::tests::test_e_key_opens_edit_form_without_askpass ... ok
[INFO] [stdout] test handler::tests::test_e_key_warns_on_stale_host ... ok
[INFO] [stdout] test handler::tests::test_edit_form_empty_askpass_when_none ... ok
[INFO] [stdout] test handler::tests::test_edit_form_populates_askpass ... ok
[INFO] [stdout] test handler::tests::test_edit_host_populates_askpass_in_form ... ok
[INFO] [stdout] test handler::tests::test_enter_on_askpass_field_opens_picker ... ok
[INFO] [stdout] test handler::tests::test_enter_on_askpass_field_select_replaces_value ... ok
[INFO] [stdout] test handler::tests::test_edit_host_populates_empty_askpass ... ok
[INFO] [stdout] test handler::tests::test_enter_on_normal_host_no_stale_warning ... ok
[INFO] [stdout] test handler::tests::test_enter_on_askpass_opens_password_picker ... ok
[INFO] [stdout] test handler::tests::test_enter_on_stale_host_shows_warning ... ok
[INFO] [stdout] test handler::tests::test_file_browser_help_esc_returns ... ok
[INFO] [stdout] test handler::tests::test_file_browser_help_return_preserves_alias ... ok
[INFO] [stdout] test handler::tests::test_file_browser_question_opens_help ... ok
[INFO] [stdout] test handler::tests::test_full_flow_clear_askpass_via_picker_none ... ok
[INFO] [stdout] test handler::tests::test_full_flow_picker_keychain_then_tab_away ... ok
[INFO] [stdout] test handler::tests::test_gcp_form_has_project_field ... ok
[INFO] [stdout] test handler::tests::test_full_flow_picker_to_typed_value ... ok
[INFO] [stdout] test handler::tests::test_gcp_form_tab_cycles_through_project ... ok
[INFO] [stdout] test handler::tests::test_help_j_increments_scroll ... ok
[INFO] [stdout] test handler::tests::test_help_k_does_not_underflow ... ok
[INFO] [stdout] test handler::tests::test_help_page_down_increments_by_ten ... ok
[INFO] [stdout] test handler::tests::test_help_page_up_does_not_underflow ... ok
[INFO] [stdout] test handler::tests::test_help_q_closes_and_returns ... ok
[INFO] [stdout] test handler::tests::test_help_scroll_reset_on_close ... ok
[INFO] [stdout] test handler::tests::test_host_detail_e_on_included_host_stays ... ok
[INFO] [stdout] test handler::tests::test_help_question_again_closes_and_returns ... ok
[INFO] [stdout] test handler::tests::test_host_detail_e_opens_edit ... ok
[INFO] [stdout] test handler::tests::test_host_detail_esc_returns_to_host_list ... ok
[INFO] [stdout] test handler::tests::test_host_detail_question_opens_help ... ok
[INFO] [stdout] test handler::tests::test_host_detail_r_opens_snippet_picker ... ok
[INFO] [stdout] test handler::tests::test_host_detail_t_opens_tunnel_list ... ok
[INFO] [stdout] test handler::tests::test_host_form_clean_esc_closes_immediately ... ok
[INFO] [stdout] test handler::tests::test_host_form_dirty_esc_n_stays ... ok
[INFO] [stdout] test handler::tests::test_host_form_dirty_esc_other_key_ignored ... ok
[INFO] [stdout] test handler::tests::test_host_form_baseline_cleared_after_submit ... ok
[INFO] [stdout] test handler::tests::test_backspace_blocked_when_auto_sync_focused ... ok
[INFO] [stdout] test handler::tests::test_host_form_dirty_esc_uppercase_y_closes ... ok
[INFO] [stdout] test handler::tests::test_host_form_dirty_esc_shows_confirmation ... ok
[INFO] [stdout] test handler::tests::test_backspace_in_askpass_field ... ok
[INFO] [stdout] test handler::tests::test_backspace_on_empty_askpass_is_noop ... ok
[INFO] [stdout] test handler::tests::test_c_key_warns_on_stale_host ... ok
[INFO] [stdout] test handler::tests::test_char_input_blocked_when_auto_sync_focused ... ok
[INFO] [stdout] test handler::tests::test_confirm_delete_question_does_not_open_help ... ok
[INFO] [stdout] test handler::tests::test_confirm_import_n_cancels ... ok
[INFO] [stdout] test handler::tests::test_confirm_import_uppercase_n_cancels ... ok
[INFO] [stdout] test handler::tests::test_confirm_purge_stale_esc_cancels ... ok
[INFO] [stdout] test handler::tests::test_containers_action_no_runtime_noop ... ok
[INFO] [stdout] test handler::tests::test_ctrl_p_on_provider_form_does_not_open_password_picker ... ok
[INFO] [stdout] test handler::tests::test_form_submit_empty_askpass_is_none ... ok
[INFO] [stdout] test handler::tests::test_form_submit_with_all_password_source_types ... ok
[INFO] [stdout] test handler::tests::test_host_form_dirty_esc_y_closes ... ok
[INFO] [stdout] test handler::tests::test_host_list_enter_carries_askpass ... ok
[INFO] [stdout] test handler::tests::test_host_list_enter_no_askpass ... ok
[INFO] [stdout] test handler::tests::test_confirm_purge_stale_y_deletes ... ok
[INFO] [stdout] test handler::tests::test_host_list_enter_no_askpass_is_none ... ok
[INFO] [stdout] test handler::tests::test_host_list_enter_carries_vault_askpass ... ok
[INFO] [stdout] test handler::tests::test_host_list_question_opens_help ... ok
[INFO] [stdout] test handler::tests::test_host_list_r_shift_opens_snippet_picker_all ... ok
[INFO] [stdout] test handler::tests::test_included_host_delete_blocked ... ok
[INFO] [stdout] test handler::tests::test_host_list_r_opens_snippet_picker ... ok
[INFO] [stdout] test handler::tests::test_included_host_edit_blocked ... ok
[INFO] [stdout] test handler::tests::test_key_detail_question_opens_help ... ok
[INFO] [stdout] test handler::tests::test_key_list_question_opens_help ... ok
[INFO] [stdout] test handler::tests::test_multiple_hosts_different_askpass_sources ... ok
[INFO] [stdout] test handler::tests::test_password_picker_blocks_char_input ... ok
[INFO] [stdout] test handler::tests::test_password_picker_ctrl_d_source_label_in_status ... ok
[INFO] [stdout] test handler::tests::test_password_picker_blocks_tab ... ok
[INFO] [stdout] test handler::tests::test_password_picker_item_count_matches_sources ... ok
[INFO] [stdout] test handler::tests::test_password_picker_ignores_unknown_keys ... ok
[INFO] [stdout] test handler::tests::test_password_picker_j_moves_down ... ok
[INFO] [stdout] test handler::tests::test_password_picker_k_moves_up ... ok
[INFO] [stdout] test handler::tests::test_password_picker_keychain_sets_status_message ... ok
[INFO] [stdout] test handler::tests::test_password_picker_none_sets_cleared_status ... ok
[INFO] [stdout] test handler::tests::test_password_picker_select_1password ... ok
[INFO] [stdout] test handler::tests::test_password_picker_select_bitwarden ... ok
[INFO] [stdout] test handler::tests::test_password_picker_select_custom ... ok
[INFO] [stdout] test handler::tests::test_password_picker_select_keychain ... ok
[INFO] [stdout] test handler::tests::test_password_picker_prefix_bw_focuses_askpass ... ok
[INFO] [stdout] test handler::tests::test_password_picker_down_arrow ... ok
[INFO] [stdout] test handler::tests::test_password_picker_enter_with_no_selection ... ok
[INFO] [stdout] test handler::tests::test_password_picker_esc_closes ... ok
[INFO] [stdout] test handler::tests::test_password_picker_prefix_vault_focuses_askpass ... ok
[INFO] [stdout] test handler::tests::test_password_sources_fit_picker_width ... ok
[INFO] [stdout] test handler::tests::test_password_picker_up_arrow ... ok
[INFO] [stdout] test handler::tests::test_password_picker_works_on_edit_host ... ok
[INFO] [stdout] test handler::tests::test_password_picker_wraps_around_bottom ... ok
[INFO] [stdout] test handler::tests::test_password_picker_wraps_around_top ... ok
[INFO] [stdout] test handler::tests::test_password_picker_ctrl_d_closes_picker ... ok
[INFO] [stdout] test handler::tests::test_password_picker_prefix_pass_focuses_askpass ... ok
[INFO] [stdout] test handler::tests::test_password_picker_ctrl_d_none_sets_status ... ok
[INFO] [stdout] test handler::tests::test_password_picker_prefix_source_focuses_askpass_field ... ok
[INFO] [stdout] test handler::tests::test_picker_esc_preserves_existing_askpass ... ok
[INFO] [stdout] test handler::tests::test_password_picker_takes_priority_over_key_picker ... ok
[INFO] [stdout] test handler::tests::test_password_picker_ctrl_d_does_not_change_form_askpass ... ok
[INFO] [stdout] test handler::tests::test_password_picker_select_none ... ok
[INFO] [stdout] test handler::tests::test_password_picker_select_pass ... ok
[INFO] [stdout] test handler::tests::test_password_picker_select_vault ... ok
[INFO] [stdout] test handler::tests::test_picker_keychain_sets_status_message ... ok
[INFO] [stdout] test handler::tests::test_picker_none_sets_cleared_status ... ok
[INFO] [stdout] test handler::tests::test_picker_prefix_source_shows_guidance ... ok
[INFO] [stdout] test handler::tests::test_provider_form_backspace_verify_tls_blocked ... ok
[INFO] [stdout] test handler::tests::test_provider_form_dirty_esc_shows_confirmation ... ok
[INFO] [stdout] test handler::tests::test_provider_form_enter_opens_key_picker ... ok
[INFO] [stdout] test handler::tests::test_provider_form_init_existing_do_explicit_false_preserved ... ok
[INFO] [stdout] test handler::tests::test_picker_select_op_then_type_rest ... ok
[INFO] [stdout] test handler::tests::test_provider_form_char_input_verify_tls_blocked ... ok
[INFO] [stdout] test handler::tests::test_provider_form_init_new_digitalocean_defaults_to_true ... ok
[INFO] [stdout] test handler::tests::test_provider_form_clean_esc_with_baseline_closes ... ok
[INFO] [stdout] test handler::tests::test_picker_select_keychain_no_further_typing_needed ... ok
[INFO] [stdout] test handler::tests::test_provider_form_dirty_esc_n_stays ... ok
[INFO] [stdout] test handler::tests::test_provider_form_init_new_proxmox_defaults_to_false ... ok
[INFO] [stdout] test handler::tests::test_provider_form_init_existing_do_preserves_auto_sync_true ... ok
[INFO] [stdout] test handler::tests::test_provider_form_esc_returns_to_provider_list ... ok
[INFO] [stdout] test handler::tests::test_provider_form_init_new_gcp_defaults ... ok
[INFO] [stdout] test handler::tests::test_provider_form_char_appended_to_focused_field ... ok
[INFO] [stdout] test handler::tests::test_picker_select_vault_then_type_rest ... ok
[INFO] [stdout] test handler::tests::test_provider_form_dirty_esc_y_closes ... ok
[INFO] [stdout] test handler::tests::test_provider_form_init_existing_proxmox_preserves_auto_sync_false ... ok
[INFO] [stdout] test handler::tests::test_provider_form_dirty_esc_other_key_ignored ... ok
[INFO] [stdout] test handler::tests::test_provider_form_left_on_auto_sync_stays_same ... ok
[INFO] [stdout] test handler::tests::test_provider_form_left_on_verify_tls_stays_same ... ok
[INFO] [stdout] test handler::tests::test_provider_form_right_on_verify_tls_stays_same ... ok
[INFO] [stdout] test handler::tests::test_provider_form_proxmox_has_extra_fields ... ok
[INFO] [stdout] test handler::tests::test_provider_list_k_selects_prev ... ok
[INFO] [stdout] test handler::tests::test_provider_list_enter_opens_form_with_existing_config ... ok
[INFO] [stdout] test handler::tests::test_provider_list_q_returns_to_host_list ... ok
[INFO] [stdout] test handler::tests::test_provider_form_right_on_auto_sync_stays_same ... ok
[INFO] [stdout] test handler::tests::test_provider_form_space_toggles_verify_tls ... ok
[INFO] [stdout] test handler::tests::test_provider_list_delete_unconfigured_is_noop ... ok
[INFO] [stdout] test handler::tests::test_provider_list_enter_opens_form_with_defaults ... ok
[INFO] [stdout] test handler::tests::test_provider_form_proxmox_default_alias_prefix ... ok
[INFO] [stdout] test handler::tests::test_provider_list_esc_cancels_running_syncs ... ok
[INFO] [stdout] test handler::tests::test_provider_form_shift_tab_reverse ... ok
[INFO] [stdout] test handler::tests::test_provider_list_j_selects_next ... ok
[INFO] [stdout] test handler::tests::test_providers_question_opens_help ... ok
[INFO] [stdout] test handler::tests::test_provider_purge_esc_returns_to_providers ... ok
[INFO] [stdout] test handler::tests::test_proxmox_defaults_auto_sync_false ... ok
[INFO] [stdout] test handler::tests::test_search_enter_on_stale_host_shows_warning ... ok
[INFO] [stdout] test handler::tests::test_provider_list_esc_returns_to_host_list ... ok
[INFO] [stdout] test handler::tests::test_search_enter_carries_askpass ... ok
[INFO] [stdout] test handler::tests::test_provider_list_delete_removes_config ... ok
[INFO] [stdout] test handler::tests::test_provider_form_tab_cycles_cloud_fields ... ok
[INFO] [stdout] test handler::tests::test_search_enter_carries_askpass_op_uri ... ok
[INFO] [stdout] test handler::tests::test_shift_c_no_cache_empty ... ok
[INFO] [stdout] test handler::tests::test_included_host_connect_still_carries_askpass ... ok
[INFO] [stdout] test handler::tests::test_select_different_hosts_carries_correct_askpass ... ok
[INFO] [stdout] test handler::tests::test_provider_form_backspace_removes_from_focused_field ... ok
[INFO] [stdout] test handler::tests::test_shift_c_loads_cache ... ok
[INFO] [stdout] test handler::tests::test_search_enter_no_askpass ... ok
[INFO] [stdout] test handler::tests::test_provider_list_sync_unconfigured_shows_status ... ok
[INFO] [stdout] test handler::tests::test_shift_c_no_host_noop ... ok
[INFO] [stdout] test handler::tests::test_shift_c_opens_containers ... ok
[INFO] [stdout] test handler::tests::test_shift_tab_from_askpass_to_proxyjump ... ok
[INFO] [stdout] test handler::tests::test_shift_tab_from_tags_goes_to_askpass ... ok
[INFO] [stdout] test handler::tests::test_provider_purge_y_returns_to_providers ... ok
[INFO] [stdout] test handler::tests::test_provider_x_key_opens_scoped_purge ... ok
[INFO] [stdout] test handler::tests::test_snippet_form_char_insert ... ok
[INFO] [stdout] test handler::tests::test_snippet_output_help_return_preserves_fields ... ok
[INFO] [stdout] test handler::tests::test_snippet_form_dirty_esc_shows_confirmation ... ok
[INFO] [stdout] test handler::tests::test_snippet_form_dirty_esc_n_stays ... ok
[INFO] [stdout] test handler::tests::test_snippet_form_backspace ... ok
[INFO] [stdout] test handler::tests::test_snippet_form_dirty_esc_y_closes ... ok
[INFO] [stdout] test handler::tests::test_snippet_form_clean_esc_with_baseline_closes ... ok
[INFO] [stdout] test handler::tests::test_snippet_output_help_esc_returns ... ok
[INFO] [stdout] test handler::tests::test_snippet_form_esc_returns_to_picker ... ok
[INFO] [stdout] test handler::tests::test_snippet_form_tab_cycles_fields ... ok
[INFO] [stdout] test handler::tests::test_snippet_output_question_opens_help ... ok
[INFO] [stdout] test handler::tests::test_snippet_form_submit_rejects_empty_name ... ok
[INFO] [stdout] test handler::tests::test_snippet_picker_a_opens_add_form ... ok
[INFO] [stdout] test handler::tests::test_snippet_form_submit_rejects_duplicate_name ... ok
[INFO] [stdout] test handler::tests::test_snippet_form_edit_rename_rollback_on_save_failure ... ok
[INFO] [stdout] test handler::tests::test_snippet_picker_d_esc_cancels_delete ... ok
[INFO] [stdout] test handler::tests::test_snippet_picker_enter_clears_multi_select ... ok
[INFO] [stdout] test handler::tests::test_snippet_picker_e_opens_edit_form ... ok
[INFO] [stdout] test handler::tests::test_snippet_picker_enter_with_no_selection ... ok
[INFO] [stdout] test handler::tests::test_snippet_picker_d_deletes_and_saves ... ok
[INFO] [stdout] test handler::tests::test_snippet_picker_d_n_cancels_delete ... ok
[INFO] [stdout] test handler::tests::test_snippet_form_submit_add ... ok
[INFO] [stdout] test handler::tests::test_snippet_picker_d_other_key_ignored ... ok
[INFO] [stdout] test handler::tests::test_snippet_picker_nav_down_up ... ok
[INFO] [stdout] test handler::tests::test_snippet_form_submit_edit ... ok
[INFO] [stdout] test handler::tests::test_snippet_picker_esc_returns_to_hostlist ... ok
[INFO] [stdout] test handler::tests::test_snippet_picker_help_esc_returns ... ok
[INFO] [stdout] test handler::tests::test_space_on_other_field_does_not_affect_auto_sync ... ok
[INFO] [stdout] test handler::tests::test_snippet_picker_question_opens_help ... ok
[INFO] [stdout] test handler::tests::test_snippet_picker_d_last_item_selects_none ... ok
[INFO] [stdout] test handler::tests::test_snippet_picker_enter_starts_output ... ok
[INFO] [stdout] test handler::tests::test_submit_azure_rejects_whitespace_only_subscriptions ... ok
[INFO] [stdout] test handler::tests::test_submit_azure_rejects_invalid_subscription_id ... ok
[INFO] [stdout] test handler::tests::test_submit_form_old_askpass_tracked_for_edit ... ok
[INFO] [stdout] test handler::tests::test_submit_azure_rejects_empty_subscriptions ... ok
[INFO] [stdout] test handler::tests::test_submit_azure_rejects_mixed_valid_invalid_subscriptions ... ok
[INFO] [stdout] test handler::tests::test_submit_form_no_keychain_removal_for_add ... ok
[INFO] [stdout] test handler::tests::test_submit_gcp_empty_token_shows_gcp_specific_hint ... ok
[INFO] [stdout] test handler::tests::test_submit_form_no_keychain_removal_when_unchanged ... ok
[INFO] [stdout] test handler::tests::test_space_toggles_auto_sync_true_to_false ... ok
[INFO] [stdout] test handler::tests::test_submit_gcp_rejects_empty_project ... ok
[INFO] [stdout] test handler::tests::test_snippet_picker_pending_delete_question_opens_help ... ok
[INFO] [stdout] test handler::tests::test_submit_gcp_rejects_whitespace_only_project ... ok
[INFO] [stdout] test handler::tests::test_snippet_picker_q_returns_to_hostlist ... ok
[INFO] [stdout] test handler::tests::test_submit_provider_form_rejects_control_chars_in_alias_prefix ... ok
[INFO] [stdout] test handler::tests::test_space_toggles_auto_sync_false_to_true ... ok
[INFO] [stdout] test handler::tests::test_submit_gcp_rejects_empty_token ... ok
[INFO] [stdout] test handler::tests::test_submit_provider_form_rejects_control_chars_in_identity_file ... ok
[INFO] [stdout] test handler::tests::test_submit_provider_form_rejects_control_chars_in_token ... ok
[INFO] [stdout] test handler::tests::test_submit_provider_form_rejects_control_chars_in_url ... ok
[INFO] [stdout] test handler::tests::test_submit_provider_form_rejects_negation_alias ... ok
[INFO] [stdout] test handler::tests::test_submit_provider_form_rejects_question_mark_alias ... ok
[INFO] [stdout] test handler::tests::test_submit_provider_form_rejects_empty_token ... ok
[INFO] [stdout] test handler::tests::test_submit_provider_form_rejects_whitespace_in_user ... ok
[INFO] [stdout] test handler::tests::test_submit_provider_form_rejects_space_in_alias_prefix ... ok
[INFO] [stdout] test handler::tests::test_submit_provider_form_persists_auto_sync_true ... ok
[INFO] [stdout] test handler::tests::test_submit_non_proxmox_url_not_required ... ok
[INFO] [stdout] test handler::tests::test_submit_provider_form_persists_auto_sync_false ... ok
[INFO] [stdout] test handler::tests::test_submit_proxmox_rejects_empty_url ... ok
[INFO] [stdout] test handler::tests::test_submit_proxmox_rejects_bare_hostname_url ... ok
[INFO] [stdout] test handler::tests::test_tab_from_askpass_goes_to_tags ... ok
[INFO] [stdout] test handler::tests::test_tab_from_askpass_to_tags ... ok
[INFO] [stdout] test handler::tests::test_t_key_warns_on_stale_host ... ok
[INFO] [stdout] test handler::tests::test_tab_reaches_askpass_field ... ok
[INFO] [stdout] test handler::tests::test_tunnel_askpass_lookup_different_sources ... ok
[INFO] [stdout] test handler::tests::test_submit_provider_form_rejects_whitespace_only_token ... ok
[INFO] [stdout] test handler::tests::test_submit_provider_form_accepts_empty_alias_prefix ... ok
[INFO] [stdout] test handler::tests::test_submit_proxmox_https_case_insensitive ... ok
[INFO] [stdout] test handler::tests::test_submit_provider_form_accepts_hyphenated_alias ... ok
[INFO] [stdout] test handler::tests::test_submit_proxmox_accepts_https_url ... ok
[INFO] [stdout] test handler::tests::test_submit_provider_form_rejects_control_chars_in_user ... ok
[INFO] [stdout] test handler::tests::test_tunnel_delete_confirmation_question_opens_help ... ok
[INFO] [stdout] test handler::tests::test_submit_provider_form_rejects_pattern_alias_prefix ... ok
[INFO] [stdout] test handler::tests::test_tunnel_delete_other_key_ignored ... ok
[INFO] [stdout] test handler::tests::test_submit_proxmox_rejects_http_url ... ok
[INFO] [stdout] test handler::tests::test_tunnel_form_clean_esc_closes ... ok
[INFO] [stdout] test handler::tests::test_tunnel_form_dirty_esc_y_closes ... ok
[INFO] [stdout] test handler::tests::test_tunnel_form_dirty_esc_n_stays ... ok
[INFO] [stdout] test handler::tests::test_tunnel_form_dirty_esc_shows_confirmation ... ok
[INFO] [stdout] test handler::tests::test_tag_picker_question_opens_help ... ok
[INFO] [stdout] test handler::tests::test_tunnel_form_left_on_text_moves_cursor ... ok
[INFO] [stdout] test handler::tests::test_tunnel_form_left_on_type_does_not_cycle ... ok
[INFO] [stdout] test handler::tests::test_tunnel_form_space_cycles_type_dynamic_to_local ... ok
[INFO] [stdout] test handler::tests::test_tunnel_form_space_cycles_type_remote_to_dynamic ... ok
[INFO] [stdout] test handler::tests::test_tunnel_form_space_cycles_type_local_to_remote ... ok
[INFO] [stdout] test handler::tests::test_tunnel_handler_askpass_none_when_absent ... ok
[INFO] [stdout] test handler::tests::test_tunnel_form_right_on_type_does_not_cycle ... ok
[INFO] [stdout] test handler::tests::test_tunnel_list_help_esc_returns ... ok
[INFO] [stdout] test handler::tests::test_tunnel_list_d_n_cancels_delete ... ok
[INFO] [stdout] test handler::tests::test_tunnel_list_help_return_preserves_alias ... ok
[INFO] [stdout] test handler::tests::test_tunnel_list_question_opens_help ... ok
[INFO] [stdout] test handler::tests::test_tunnel_form_space_on_bind_port_inserts_space ... ok
[INFO] [stdout] test handler::tests::test_tunnel_handler_reads_askpass_from_hosts ... ok
[INFO] [stdout] test handler::tests::test_tunnel_list_d_esc_cancels_delete ... ok
[INFO] [stdout] test history::tests::test_timestamps_empty_fourth_column ... ok
[INFO] [stdout] test handler::tests::test_tunnel_list_d_y_deletes_tunnel ... ok
[INFO] [stdout] test import::tests::test_import_all_duplicates_message ... ok
[INFO] [stdout] test handler::tests::test_type_askpass_directly_without_picker ... ok
[INFO] [stdout] test handler::tests::test_type_custom_command_directly ... ok
[INFO] [stdout] test history::tests::test_timestamps_retention_prunes_old ... ok
[INFO] [stdout] test import::tests::test_import_comments_and_blanks_only ... ok
[INFO] [stdout] test import::tests::test_import_from_file_nonexistent ... ok
[INFO] [stdout] test handler::tests::test_typing_in_askpass_field ... ok
[INFO] [stdout] test import::tests::test_import_status_pluralization ... ok
[INFO] [stdout] test handler::tests::test_x_key_no_stale_shows_status ... ok
[INFO] [stdout] test import::tests::test_is_bare_ip ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_all_ips_comma_skipped ... ok
[INFO] [stdout] test handler::tests::test_x_key_opens_confirm_purge_stale ... ok
[INFO] [stdout] test history::tests::test_format_time_ago_recent ... ok
[INFO] [stdout] test history::tests::test_format_time_ago_zero ... ok
[INFO] [stdout] test history::tests::test_frecency_score_unknown_alias ... ok
[INFO] [stdout] test history::tests::test_retention_keeps_nine_months ... ok
[INFO] [stdout] test history::tests::test_retention_prunes_beyond_one_year ... ok
[INFO] [stdout] test history::tests::test_timestamps_cap ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_bracket_junk_after_close_fails ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_bracket_no_port ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_comma_separated ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_empty_string ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_bracketed_ip_first_comma_picks_hostname ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_hashed ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_bracket_pattern_skipped ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_hex_hostname_not_skipped ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_ip_first_comma_picks_hostname ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_ip_only ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_ipv6_first_comma_picks_hostname ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_ipv6_skipped ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_ipv6_zone_id_skipped ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_malformed_is_failure ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_marker_is_skipped ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_bracket_trailing_colon_fails ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_invalid_port ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_hostname_with_hyphen ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_simple ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_single_field ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_multiple_hostnames_comma ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_negation_pattern_skipped ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_numeric_first_label_not_skipped ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_question_mark_pattern_skipped ... ok
[INFO] [stdout] test import::tests::test_import_empty_file ... ok
[INFO] [stdout] test history::tests::test_timestamps_parsing_roundtrip ... ok
[INFO] [stdout] test import::tests::test_import_skips_duplicates ... ok
[INFO] [stdout] test import::tests::test_import_from_known_hosts_adds_to_config ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_with_port ... ok
[INFO] [stdout] test import::tests::test_parse_known_hosts_wildcard_is_skipped ... ok
[INFO] [stdout] test preferences::tests::load_askpass_among_other_prefs ... ok
[INFO] [stdout] test preferences::tests::load_askpass_preserves_op_uri ... ok
[INFO] [stdout] test preferences::tests::load_askpass_preserves_vault_uri ... ok
[INFO] [stdout] test preferences::tests::load_askpass_returns_none_for_empty ... ok
[INFO] [stdout] test preferences::tests::load_askpass_returns_none_when_missing ... ok
[INFO] [stdout] test preferences::tests::load_askpass_returns_value ... ok
[INFO] [stdout] test providers::aws::tests::test_ami_batch_size_is_reasonable ... ok
[INFO] [stdout] test preferences::tests::save_value_replaces_existing ... ok
[INFO] [stdout] test providers::aws::tests::test_aws_mixed_valid_invalid_region_error ... ok
[INFO] [stdout] test providers::aws::tests::test_aws_invalid_region_error ... ok
[INFO] [stdout] test providers::aws::tests::test_aws_no_regions_error ... ok
[INFO] [stdout] test providers::aws::tests::test_aws_region_groups_cover_all_regions ... ok
[INFO] [stdout] test providers::aws::tests::test_extract_tags_empty ... ok
[INFO] [stdout] test providers::aws::tests::test_aws_regions_no_duplicates ... ok
[INFO] [stdout] test providers::aws::tests::test_extract_tags_empty_value_skipped ... ok
[INFO] [stdout] test providers::aws::tests::test_aws_provider_name ... ok
[INFO] [stdout] test providers::aws::tests::test_extract_tags_filters_aws_prefix ... ok
[INFO] [stdout] test providers::aws::tests::test_extract_tags_name_and_values ... ok
[INFO] [stdout] test providers::aws::tests::test_aws_regions_contains_common ... ok
[INFO] [stdout] test providers::aws::tests::test_aws_regions_not_empty ... ok
[INFO] [stdout] test preferences::tests::save_value_appends_new_key ... ok
[INFO] [stdout] test preferences::tests::save_value_builds_correct_line ... ok
[INFO] [stdout] test providers::aws::tests::test_extract_tags_no_name ... ok
[INFO] [stdout] test providers::aws::tests::test_hex_encode ... ok
[INFO] [stdout] test providers::aws::tests::test_format_utc_epoch_zero ... ok
[INFO] [stdout] test providers::aws::tests::test_format_utc_end_of_year ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_credentials_default_profile ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_credentials_extra_keys_ignored ... ok
[INFO] [stdout] test providers::aws::tests::test_param_helper ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_credentials_empty_content ... ok
[INFO] [stdout] test providers::aws::tests::test_no_ip_at_all_still_parseable ... ok
[INFO] [stdout] test providers::aws::tests::test_hmac_sha256_known ... ok
[INFO] [stdout] test providers::aws::tests::test_format_utc_known_date ... ok
[INFO] [stdout] test providers::aws::tests::test_format_utc_leap_year ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_credentials_incomplete_profile ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_credentials_missing_profile ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_credentials_named_profile ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_credentials_whitespace_handling ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_describe_images ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_describe_images_empty ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_describe_instances_basic ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_describe_instances_empty ... ok
[INFO] [stdout] test providers::aws::tests::test_sign_request_deterministic ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_describe_instances_multiple_reservations ... ok
[INFO] [stdout] test providers::aws::tests::test_sign_request_format ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_describe_instances_no_public_ip ... ok
[INFO] [stdout] test providers::aws::tests::test_sign_request_different_regions ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_describe_instances_with_next_token ... ok
[INFO] [stdout] test providers::aws::tests::test_uri_encode_passthrough ... ok
[INFO] [stdout] test providers::aws::tests::test_uri_encode_empty ... ok
[INFO] [stdout] test providers::aws::tests::test_uri_encode_special_chars ... ok
[INFO] [stdout] test providers::aws::tests::test_parse_private_ip_address ... ok
[INFO] [stdout] test providers::aws::tests::test_public_ip_preferred_over_private ... ok
[INFO] [stdout] test providers::aws::tests::test_resolve_credentials_bad_profile_returns_auth_failed ... ok
[INFO] [stdout] test providers::aws::tests::test_resolve_credentials_empty_parts ... ok
[INFO] [stdout] test providers::aws::tests::test_resolve_credentials_no_colon ... ok
[INFO] [stdout] test providers::aws::tests::test_resolve_credentials_token_format ... ok
[INFO] [stdout] test providers::aws::tests::test_sha256_empty ... ok
[INFO] [stdout] test providers::aws::tests::test_sha256_known ... ok
[INFO] [stdout] test providers::azure::tests::test_azure_no_subscriptions_error ... ok
[INFO] [stdout] test providers::azure::tests::test_azure_provider_name ... ok
[INFO] [stdout] test providers::azure::tests::test_azure_rejects_invalid_subscription_id ... ok
[INFO] [stdout] test providers::azure::tests::test_azure_token_response_deserialize ... ok
[INFO] [stdout] test providers::azure::tests::test_azure_token_response_missing_token_fails ... ok
[INFO] [stdout] test providers::azure::tests::test_build_metadata_empty ... ok
[INFO] [stdout] test providers::azure::tests::test_build_tags_empty_map ... ok
[INFO] [stdout] test providers::azure::tests::test_build_os_string_custom_image ... ok
[INFO] [stdout] test providers::azure::tests::test_build_metadata_normalizes_location_case ... ok
[INFO] [stdout] test providers::azure::tests::test_extract_power_state_deallocated ... ok
[INFO] [stdout] test providers::azure::tests::test_build_tags_from_vm_tags ... ok
[INFO] [stdout] test providers::azure::tests::test_build_metadata_full ... ok
[INFO] [stdout] test providers::azure::tests::test_build_os_string_full ... ok
[INFO] [stdout] test providers::azure::tests::test_extract_power_state_no_power_status ... ok
[INFO] [stdout] test providers::azure::tests::test_build_os_string_none ... ok
[INFO] [stdout] test providers::azure::tests::test_extract_power_state_none ... ok
[INFO] [stdout] test providers::azure::tests::test_build_tags_empty ... ok
[INFO] [stdout] test providers::aws::tests::test_format_utc_year_2000 ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_public_ip_with_no_address ... ok
[INFO] [stdout] test providers::azure::tests::test_invalid_subscription_id ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_service_principal_az_cli_format ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_service_principal_camel_case ... ok
[INFO] [stdout] test providers::azure::tests::test_is_sp_file ... ok
[INFO] [stdout] test providers::azure::tests::test_nextlink_domain_validation ... ok
[INFO] [stdout] test providers::azure::tests::test_nextlink_valid_azure_url ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_empty_vm_list ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_nic_response ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_nic_with_empty_ip_configs ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_public_ip_response ... ok
[INFO] [stdout] test providers::azure::tests::test_extract_power_state_running ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_vm_list_no_next_link ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_vm_list_response ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_vm_list_with_next_link ... ok
[INFO] [stdout] test providers::azure::tests::test_parse_vm_with_null_properties ... ok
[INFO] [stdout] test providers::azure::tests::test_resolve_sp_token_file_not_found ... ok
[INFO] [stdout] test providers::azure::tests::test_resolve_token_bearer_only_rejects_empty ... ok
[INFO] [stdout] test providers::azure::tests::test_resolve_token_no_bearer_prefix ... ok
[INFO] [stdout] test providers::azure::tests::test_resolve_token_strips_bearer_prefix ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_case_insensitive_ids ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_empty_nic_list ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_falls_back_to_private ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_ip_config_no_primary_uses_first ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_nic_not_in_map ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_no_network_profile ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_nic_with_no_ip_configs ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_no_primary_uses_first ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_pip_empty_address_falls_back_to_private ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_pip_not_in_map_falls_back_to_private ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_prefers_public ... ok
[INFO] [stdout] test providers::azure::tests::test_select_ip_primary_nic_selection ... ok
[INFO] [stdout] test providers::azure::tests::test_sp_file_invalid_json ... ok
[INFO] [stdout] test providers::azure::tests::test_sp_file_missing_fields ... ok
[INFO] [stdout] test providers::azure::tests::test_valid_subscription_id ... ok
[INFO] [stdout] test providers::azure::tests::test_vm_with_valid_vmid_is_not_empty ... ok
[INFO] [stdout] test providers::config::tests::test_alias_prefix_override ... ok
[INFO] [stdout] test providers::azure::tests::test_vm_with_empty_vmid_is_detected ... ok
[INFO] [stdout] test providers::azure::tests::test_send_form_array_syntax_with_owned_strings ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_default_false_for_proxmox ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_default_all_others_true ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_default_proxmox_false ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_default_true_for_non_proxmox ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_explicit_false_non_proxmox ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_explicit_true ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_false_variants ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_not_written_when_default ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_override_do_to_false ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_malformed_value_treated_as_true ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_override_proxmox_to_true ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_true_variants ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_values ... ok
[INFO] [stdout] test providers::config::tests::test_auto_sync_written_only_when_non_default ... ok
[INFO] [stdout] test providers::config::tests::test_blank_lines_ignored ... ok
[INFO] [stdout] test providers::config::tests::test_comments_ignored ... ok
[INFO] [stdout] test providers::config::tests::test_configured_providers_empty ... ok
[INFO] [stdout] test providers::config::tests::test_configured_providers_returns_all ... ok
[INFO] [stdout] test providers::config::tests::test_configured_providers_returns_all_sections ... ok
[INFO] [stdout] test providers::config::tests::test_default_alias_prefix_digitalocean ... ok
[INFO] [stdout] test providers::config::tests::test_default_alias_prefix_from_short_label ... ok
[INFO] [stdout] test providers::config::tests::test_default_alias_prefix_gcp ... ok
[INFO] [stdout] test providers::config::tests::test_default_alias_prefix_proxmox ... ok
[INFO] [stdout] test providers::config::tests::test_default_alias_prefix_unknown_provider ... ok
[INFO] [stdout] test providers::config::tests::test_default_alias_prefix_upcloud ... ok
[INFO] [stdout] test providers::config::tests::test_default_identity_file_empty ... ok
[INFO] [stdout] test providers::config::tests::test_default_url_empty ... ok
[INFO] [stdout] test providers::config::tests::test_default_user_is_root ... ok
[INFO] [stdout] test providers::config::tests::test_default_user_root_when_not_specified ... ok
[INFO] [stdout] test providers::config::tests::test_defaults_applied ... ok
[INFO] [stdout] test providers::config::tests::test_duplicate_section_first_wins ... ok
[INFO] [stdout] test providers::config::tests::test_gcp_project_default_empty ... ok
[INFO] [stdout] test providers::config::tests::test_gcp_project_parsed ... ok
[INFO] [stdout] test providers::config::tests::test_gcp_project_roundtrip ... ok
[INFO] [stdout] test providers::config::tests::test_line_without_equals_ignored ... ok
[INFO] [stdout] test providers::config::tests::test_multiple_providers ... ok
[INFO] [stdout] test providers::config::tests::test_non_proxmox_url_not_written ... ok
[INFO] [stdout] test providers::config::tests::test_non_proxmox_url_parsed_but_ignored ... ok
[INFO] [stdout] test providers::config::tests::test_parse_comments_and_blanks ... ok
[INFO] [stdout] test providers::config::tests::test_parse_duplicate_sections_first_wins ... ok
[INFO] [stdout] test providers::config::tests::test_parse_duplicate_sections_trailing ... ok
[INFO] [stdout] test providers::config::tests::test_parse_empty ... ok
[INFO] [stdout] test providers::config::tests::test_parse_key_field_sets_identity_file ... ok
[INFO] [stdout] test providers::config::tests::test_parse_single_section ... ok
[INFO] [stdout] test providers::config::tests::test_parse_unknown_keys_ignored ... ok
[INFO] [stdout] test providers::config::tests::test_parse_unknown_provider_still_parsed ... ok
[INFO] [stdout] test providers::config::tests::test_parse_url_and_verify_tls ... ok
[INFO] [stdout] test providers::config::tests::test_parse_multiple_sections ... ok
[INFO] [stdout] test providers::config::tests::test_parse_value_with_equals ... ok
[INFO] [stdout] test providers::config::tests::test_parse_whitespace_around_key_value ... ok
[INFO] [stdout] test providers::config::tests::test_parse_whitespace_in_section_name ... ok
[INFO] [stdout] test providers::config::tests::test_proxmox_token_with_exclamation ... ok
[INFO] [stdout] test providers::config::tests::test_proxmox_url_fallback_in_section ... ok
[INFO] [stdout] test providers::config::tests::test_proxmox_url_parsed ... ok
[INFO] [stdout] test providers::config::tests::test_remove_nonexistent_section_noop ... ok
[INFO] [stdout] test providers::config::tests::test_remove_section ... ok
[INFO] [stdout] test providers::config::tests::test_remove_section_all ... ok
[INFO] [stdout] test providers::config::tests::test_remove_section_keeps_others ... ok
[INFO] [stdout] test providers::config::tests::test_section_by_name ... ok
[INFO] [stdout] test providers::config::tests::test_section_lookup ... ok
[INFO] [stdout] test providers::config::tests::test_section_lookup_missing ... ok
[INFO] [stdout] test providers::config::tests::test_section_not_found ... ok
[INFO] [stdout] test providers::config::tests::test_serialize_roundtrip_single_provider ... ok
[INFO] [stdout] test providers::config::tests::test_set_section_add ... ok
[INFO] [stdout] test providers::config::tests::test_section_lookup_found ... ok
[INFO] [stdout] test providers::config::tests::test_set_section_multiple_adds ... ok
[INFO] [stdout] test providers::config::tests::test_set_section_adds_new ... ok
[INFO] [stdout] test providers::config::tests::test_set_section_replace ... ok
[INFO] [stdout] test providers::config::tests::test_set_section_replaces_existing ... ok
[INFO] [stdout] test providers::config::tests::test_token_with_equals_sign ... ok
[INFO] [stdout] test providers::config::tests::test_unknown_key_ignored ... ok
[INFO] [stdout] test providers::config::tests::test_url_and_verify_tls_round_trip ... ok
[INFO] [stdout] test handler::tests::test_snippet_form_submit_rollback_on_save_failure ... FAILED
[INFO] [stdout] test handler::tests::test_snippet_picker_d_rollback_on_save_failure ... FAILED
[INFO] [stdout] test providers::config::tests::test_user_override ... ok
[INFO] [stdout] test providers::config::tests::test_verify_tls_default_true ... ok
[INFO] [stdout] test providers::config::tests::test_whitespace_around_key_value ... ok
[INFO] [stdout] test providers::config::tests::test_whitespace_around_section_name ... ok
[INFO] [stdout] test providers::config::tests::test_verify_tls_values ... ok
[INFO] [stdout] test providers::config::tests::test_verify_tls_false_variants ... ok
[INFO] [stdout] test providers::config::tests::test_verify_tls_true_variants ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_empty_networks_skipped ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_default_tags_empty ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_extra_fields_ignored ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_id_is_u64 ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_large_id ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_multiple_private_v4_no_public ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_multiple_public_v4_uses_first ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_prefers_v4_over_v6 ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_private_only_skipped ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_private_v4_public_v6_uses_v6 ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_private_v6_not_used ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_tags_preserved ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_droplet_v6_default_empty ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_empty_droplet_list_stops_pagination ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_ipv6_only_droplet_uses_v6 ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_meta_extra_fields_ignored ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_network_ip_extra_fields_ignored ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_pagination_continues_when_total_exceeds_fetched ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_pagination_stops_when_fetched_reaches_total ... ok
[INFO] [stdout] test providers::digitalocean::tests::test_parse_droplet_response ... ok
[INFO] [stdout] test providers::gcp::tests::test_build_tags_empty ... ok
[INFO] [stdout] test providers::gcp::tests::test_build_tags_empty_items_vec ... ok
[INFO] [stdout] test providers::gcp::tests::test_build_tags_from_labels ... ok
[INFO] [stdout] test providers::gcp::tests::test_build_tags_from_network_tags ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_domain_scoped_project_id ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_no_project_error ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_provider_name ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_rejects_space_in_project_id ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_rejects_special_chars_in_project_id ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_rejects_uppercase_project_id ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_empty_zones_accepted ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_zone_groups_cover_all_zones ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_valid_project_id ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_zones_contains_common ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_zones_count ... ok
[INFO] [stdout] test providers::gcp::tests::test_instance_id_is_string ... ok
[INFO] [stdout] test providers::gcp::tests::test_is_json_key_file ... ok
[INFO] [stdout] test providers::gcp::tests::test_gcp_zones_no_duplicates ... ok
[INFO] [stdout] test providers::gcp::tests::test_last_url_segment ... ok
[INFO] [stdout] test providers::gcp::tests::test_metadata_empty_fields ... ok
[INFO] [stdout] test providers::gcp::tests::test_metadata_full ... ok
[INFO] [stdout] test providers::gcp::tests::test_metadata_no_licenses ... ok
[INFO] [stdout] test providers::gcp::tests::test_parse_empty_pagination_token ... ok
[INFO] [stdout] test providers::gcp::tests::test_parse_empty_zone ... ok
[INFO] [stdout] test providers::gcp::tests::test_parse_aggregated_list_response ... ok
[INFO] [stdout] test providers::gcp::tests::test_parse_ipv6_access_configs ... ok
[INFO] [stdout] test providers::gcp::tests::test_parse_missing_ipv6_access_configs ... ok
[INFO] [stdout] test providers::gcp::tests::test_parse_no_pagination_token ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_empty_network_ip ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_falls_back_to_internal ... ok
[INFO] [stdout] test providers::gcp::tests::test_parse_pagination_token ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_ipv6_cross_interface ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_ipv6_empty_returns_none ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_falls_back_to_ipv6 ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_no_interfaces ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_prefers_internal_over_ipv6 ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_multiple_interfaces_cross_interface ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_prefers_ipv4_over_ipv6 ... ok
[INFO] [stdout] test providers::gcp::tests::test_token_response_deserialize ... ok
[INFO] [stdout] test providers::gcp::tests::test_url_encode_empty ... ok
[INFO] [stdout] test providers::gcp::tests::test_token_response_missing_access_token_fails ... ok
[INFO] [stdout] test providers::gcp::tests::test_send_form_array_syntax_compiles ... ok
[INFO] [stdout] test providers::gcp::tests::test_url_encode_special_chars ... ok
[INFO] [stdout] test providers::gcp::tests::test_url_encode_plain ... ok
[INFO] [stdout] test providers::hetzner::tests::test_datacenter_fallback_when_no_location ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_both_empty_skipped ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_both_null_skipped ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_default_labels_empty ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_empty_ipv4_skipped ... ok
[INFO] [stdout] test providers::hetzner::tests::test_empty_location_falls_back_to_datacenter_location ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_dual_stack_prefers_v4 ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_empty_server_list ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_empty_name ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_empty_ipv4_with_v6_uses_v6 ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_empty_v6_skipped ... ok
[INFO] [stdout] test providers::hetzner::tests::test_datacenter_without_nested_location_returns_none ... ok
[INFO] [stdout] test providers::gcp::tests::test_select_ip_prefers_nat ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_ipinfo_extra_fields_ignored ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_extra_fields_ignored ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_labels_sorted ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_label_empty_value_uses_key ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_labels_with_special_chars ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_many_labels_sorted ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_large_id ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_multiple_labels ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_no_ip_skipped ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_labels_to_tags_empty_value ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_null_v6_field ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_multiple_servers_parsed ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_prefers_v4_over_v6 ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_labels_to_tags_key_value ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_pagination_extra_fields_ignored ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_v6_only_fallback ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_v6_cidr_128 ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_v6_without_cidr ... ok
[INFO] [stdout] test providers::hetzner::tests::test_location_preferred_over_datacenter ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_100_128_not_cgnat ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_pagination_continues ... ok
[INFO] [stdout] test providers::hetzner::tests::test_ipv6_only_server_uses_v6 ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_100_63_not_cgnat ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_172_15_not_private ... ok
[INFO] [stdout] test providers::hetzner::tests::test_hetzner_pagination_stops ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_172_range_boundary ... ok
[INFO] [stdout] test providers::hetzner::tests::test_parse_hetzner_response ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_loopback ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_public_ranges ... ok
[INFO] [stdout] test providers::hetzner::tests::test_no_location_no_datacenter ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_all_private_falls_back_to_first ... ok
[INFO] [stdout] test providers::linode::tests::test_ipv6_only_instance_uses_v6 ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_empty_ipv4_empty_ipv6_returns_none ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_172_nonnumeric ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_172_all_boundary_octets ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_ipv6_cidr_stripped ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_172_32_not_private ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_ipv6_empty_string ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_cgnat_100_64_is_private ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_ipv6_null ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_ipv6_field_omitted_falls_to_private ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_default_tags_empty ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_ipv6_no_cidr ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_empty_data_stops_pagination ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_empty_label ... ok
[INFO] [stdout] test providers::linode::tests::test_is_private_ip_100_range_boundary ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_large_id ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_missing_ipv6_field ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_multiple_instances_parsed ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_pagination_stops ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_private_ip_first_then_public ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_private_only_falls_back_to_private ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_public_ipv4_preferred_over_ipv6 ... ok
[INFO] [stdout] test providers::linode::tests::test_parse_linode_response ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_disabled_explicit ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_private_v4_and_v6_prefers_private_v4 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_disabled_simple ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_tags_preserved ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_enabled_explicit ... ok
[INFO] [stdout] test providers::linode::tests::test_parse_linode_prefers_public_ip ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_enabled_explicit_with_options ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_multiple_public_ips_uses_first ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_enabled_with_options ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_no_ips_at_all ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_empty ... ok
[INFO] [stdout] test providers::linode::tests::test_linode_pagination_continues ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_enabled_2_not_treated_as_enabled ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_disabled_explicit_with_options ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_enabled_explicit_zero_with_options ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_disabled_with_options ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_enabled_many_options ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_enabled_with_spaces ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_garbage_value ... ok
[INFO] [stdout] test providers::proxmox::tests::test_auth_header_already_prefixed ... ok
[INFO] [stdout] test providers::proxmox::tests::test_auth_header_complex_token ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_enabled_simple ... ok
[INFO] [stdout] test providers::proxmox::tests::test_auth_header_prepends_prefix ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_enabled_only_commas ... ok
[INFO] [stdout] test providers::proxmox::tests::test_auth_header_without_prefix ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_ip_comma_separated_treated_as_single ... ok
[INFO] [stdout] test providers::proxmox::tests::test_agent_none ... ok
[INFO] [stdout] test providers::proxmox::tests::test_auth_header_ldap_user ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_ip_with_cidr_stripped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_all_null_fields ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_ip_unusable_filtered ... ok
[INFO] [stdout] test providers::proxmox::tests::test_auth_header_with_prefix ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_template_as_boolean ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_template_as_false ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_null_vmid ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_without_maxcpu_maxmem ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resources_pve8_comma_tags ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_partial_null_in_array ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_numbered_values_number_value ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_numbered_values_non_sequential ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_numbered_values_skips_non_string ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_numbered_values_sorted ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_ostype_missing ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_ostype_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_ip_field ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_numbered_values_empty_map ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_null_name ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_null_status ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_numbered_values_ignores_non_numeric_suffix ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_numbered_values_null_value ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_template_as_null ... ok
[INFO] [stdout] test providers::proxmox::tests::test_cluster_resource_with_maxcpu_maxmem ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_numbered_values_boolean_value ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_numbered_values_empty_prefix ... ok
[INFO] [stdout] test providers::proxmox::tests::test_extract_ostype_present ... ok
[INFO] [stdout] test providers::proxmox::tests::test_format_plan_both ... ok
[INFO] [stdout] test providers::proxmox::tests::test_format_plan_none ... ok
[INFO] [stdout] test providers::proxmox::tests::test_format_plan_mem_only ... ok
[INFO] [stdout] test providers::proxmox::tests::test_full_guest_agent_response_with_null_data ... ok
[INFO] [stdout] test providers::proxmox::tests::test_full_guest_agent_response_with_null_result ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_empty_ip_address_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_loopback_then_real_ip ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_empty_ip_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_picks_ipv4_from_second_interface ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_ipv4_preferred ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_realistic_multi_nic ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_response_null_data ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_response_empty_data_object ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_response_null_result ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_result_missing_is_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_format_plan_cpu_only ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_ip_with_cidr_prefix ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_response_with_null_interface_name_in_array ... ok
[INFO] [stdout] test providers::proxmox::tests::test_format_plan_sub_gib_memory ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_ipv6_fallback ... ok
[INFO] [stdout] test providers::proxmox::tests::test_format_plan_zeros ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_strips_cidr_ipv4 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_interface_null_ip_addresses ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_strips_cidr_ipv6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_interface_null_name ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_two_ipv4_picks_first ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_result_null_is_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_ip_address_null_fields ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_skips_ipv6_loopback ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_skips_link_local ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_empty_interfaces ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_skips_link_local_uppercase ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_skips_loopback ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_skips_loopback_ip_on_non_lo_iface ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_skips_loopback_range ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ipconfig_only_ip6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ipconfig_prefers_ipv4_over_ipv6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_is_unusable_ip_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_is_unusable_ip_normal_v4 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_string_boolean_false_to_zero ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_string_boolean_true_to_one ... ok
[INFO] [stdout] test providers::proxmox::tests::test_is_unusable_ip_unspecified_v6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_string_number_to_string ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet6_global_with_scope ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ipconfig_dhcp_falls_back_to_ip6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet6_loopback_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_string_null_to_none ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ipconfig_ip6_auto_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet6_multiple_tokens ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_u8_boolean_false_to_zero ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ipconfig_ip6_manual_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_u8_float_to_zero ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ipconfig_manual_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_u8_missing_to_zero ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_string_zero_to_string ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_u8_boolean_true ... ok
[INFO] [stdout] test providers::proxmox::tests::test_guest_agent_skips_mixed_case_link_local ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_u8_large_number_wraps ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet6_fallback ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet_leading_whitespace ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_string_array_to_none ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_inet_loopback_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet_with_scope_info ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_interface_null_ip_addresses ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_interface_null_name ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_format_ipv4 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_format_ipv4_preferred_over_ipv6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lenient_u8_null_to_zero ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet_preferred ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet_tab_separated ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet_empty_string ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_format_skips_link_local ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_inet_preferred_over_inet6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_format_skips_loopback ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_inet6_skips_link_local ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_inet_takes_precedence_over_ip_addresses ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_inet6_type ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_inet_skips_loopback ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_inet_skips_link_local_v4 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_multi_nic_net0_dhcp_net1_static ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_net_dhcp_falls_back_to_ip6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_net_full_line ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_net_ip6_auto_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_net_ip6_manual_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_net_manual_skipped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_only_lo_interface ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_resource_type_tag_no_duplicate ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_skips_ipv6_loopback ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_skips_link_local_ipv4 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_skips_link_local_ipv6_colon ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_skips_link_local_ipv6_zone_id ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_skips_link_local_ipv6_zone_id_uppercase ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_skips_loopback ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_skips_loopback_ip_on_non_lo_iface ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_skips_mixed_case_link_local_inet6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_map_qemu_ostype_linux ... ok
[INFO] [stdout] test providers::proxmox::tests::test_map_qemu_ostype_passthrough ... ok
[INFO] [stdout] test providers::proxmox::tests::test_map_qemu_ostype_windows ... ok
[INFO] [stdout] test providers::proxmox::tests::test_multi_nic_ipconfig_fallback ... ok
[INFO] [stdout] test providers::proxmox::tests::test_name_fallback_when_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_api_suffix ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_api_suffix_trailing_slash ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_http_preserved ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_empty_string ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_inet_type_ipv4 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_bare ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_ip_addresses_strips_cidr ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_link_local_v4_falls_through_to_inet6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_just_api_path ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_no_trailing ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_multiple_trailing_slashes ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_trailing_slash ... ok
[INFO] [stdout] test providers::proxmox::tests::test_lxc_multi_interface_with_lo_first ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_no_port ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_trailing_slashes_and_api ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_whitespace_only ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_whitespace ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_guest_agent_response_double_wrapped ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_dhcp_and_ip6_manual ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ip6_auto ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ip6_auto_case_insensitive ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_cluster_resources ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ip6_dhcp ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_both_dhcp ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ip6_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ip6_manual ... ok
[INFO] [stdout] test providers::proxmox::tests::test_normalize_url_with_subpath ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_dhcp_case_insensitive ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_dhcp_with_ip6_static ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ipv4_preferred_over_ipv6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_dhcp ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ip6_only ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ip_manual ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ip_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_dhcp_with_ip6_static ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_ip6_auto_case_insensitive ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_ip6_auto ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_ip6_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_ip_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_ip6_only ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_ip_manual ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_ipv4_preferred_over_ipv6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_pve7_semicolon_tags ... ok
[INFO] [stdout] test providers::proxmox::tests::test_pve8_comma_tags ... ok
[INFO] [stdout] test providers::proxmox::tests::test_pve_tags_comma_separated ... ok
[INFO] [stdout] test providers::proxmox::tests::test_pve_space_tags ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_ipv6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_pve_tags_mixed_separators ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_manual_case_insensitive ... ok
[INFO] [stdout] test providers::proxmox::tests::test_resource_type_filter_storage_excluded ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_manual_with_ip6_static ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_no_ip_key ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_static ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_ipconfig_whitespace_around_parts ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_interfaces ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_dhcp ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_dhcp_case_insensitive ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_ip6_manual ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_manual_with_ip6_static ... ok
[INFO] [stdout] test providers::proxmox::tests::test_parse_lxc_net_static ... ok
[INFO] [stdout] test providers::proxmox::tests::test_server_id_format_lxc ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_mixed ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_lowercased ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_mixed_all_separators ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_semicolons ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_spaces ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_single_tag ... ok
[INFO] [stdout] test providers::proxmox::tests::test_template_filtered ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_commas ... ok
[INFO] [stdout] test providers::proxmox::tests::test_resource_type_tag_added ... ok
[INFO] [stdout] test providers::proxmox::tests::test_resource_type_tag_no_duplicate_when_pve_tag_matches ... ok
[INFO] [stdout] test providers::proxmox::tests::test_server_id_format ... ok
[INFO] [stdout] test providers::proxmox::tests::test_unusable_ip_loopback_ipv6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_unusable_ip_link_local_ipv6 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_whitespace ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ureq_status_403_matches_auth_pattern ... ok
[INFO] [stdout] test providers::proxmox::tests::test_unusable_ip_loopback_ipv4 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_unusable_ip_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_tags_consecutive_separators_produce_no_empty ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ureq_status_401_matches_auth_pattern ... ok
[INFO] [stdout] test providers::proxmox::tests::test_unusable_ip_link_local_ipv4 ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ureq_status_429_does_not_match_proxmox_auth_pattern ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmconfig_agent_as_boolean_false ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ureq_status_501_matches_agent_error_pattern ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmconfig_agent_as_integer_zero ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmconfig_agent_as_integer ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ureq_status_500_matches_lxc_iface_pattern ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ureq_status_502_does_not_match_agent_patterns ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ureq_status_404_matches_lxc_iface_pattern ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ureq_status_501_matches_lxc_iface_pattern ... ok
[INFO] [stdout] test providers::proxmox::tests::test_usable_ip_private ... ok
[INFO] [stdout] test providers::proxmox::tests::test_ureq_status_500_matches_agent_error_pattern ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmconfig_agent_as_null ... ok
[INFO] [stdout] test providers::proxmox::tests::test_usable_ip_public ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmconfig_default ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmconfig_agent_missing ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmid_zero_is_valid ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmconfig_agent_as_boolean ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmconfig_flatten_deserialization ... ok
[INFO] [stdout] test providers::scaleway::tests::test_metadata_from_server ... ok
[INFO] [stdout] test providers::scaleway::tests::test_metadata_uses_zone_param_not_server_field ... ok
[INFO] [stdout] test providers::scaleway::tests::test_parse_server_extra_fields_ignored ... ok
[INFO] [stdout] test providers::scaleway::tests::test_parse_server_with_legacy_public_ip ... ok
[INFO] [stdout] test providers::scaleway::tests::test_parse_server_with_public_ips ... ok
[INFO] [stdout] test providers::scaleway::tests::test_default_tags_empty ... ok
[INFO] [stdout] test providers::scaleway::tests::test_private_ip_parsed ... ok
[INFO] [stdout] test providers::scaleway::tests::test_empty_server_list_stops_pagination ... ok
[INFO] [stdout] test providers::proxmox::tests::test_vmconfig_agent_as_string ... ok
[INFO] [stdout] test providers::scaleway::tests::test_scaleway_invalid_zone_error ... ok
[INFO] [stdout] test providers::scaleway::tests::test_metadata_empty_fields_omitted ... ok
[INFO] [stdout] test providers::scaleway::tests::test_image_name_parsed ... ok
[INFO] [stdout] test providers::scaleway::tests::test_scw_zone_groups_cover_all_zones ... ok
[INFO] [stdout] test providers::scaleway::tests::test_scw_zones_contains_common ... ok
[INFO] [stdout] test providers::scaleway::tests::test_scw_zones_count ... ok
[INFO] [stdout] test providers::scaleway::tests::test_scw_zones_no_duplicates ... ok
[INFO] [stdout] test providers::scaleway::tests::test_parse_list_servers_response ... ok
[INFO] [stdout] test providers::scaleway::tests::test_select_ip_empty_public_ips_uses_legacy ... ok
[INFO] [stdout] test providers::scaleway::tests::test_select_ip_empty_address_skipped ... ok
[INFO] [stdout] test providers::scaleway::tests::test_select_ip_multiple_v4_uses_first ... ok
[INFO] [stdout] test providers::scaleway::tests::test_image_null_handled ... ok
[INFO] [stdout] test providers::scaleway::tests::test_scaleway_mixed_valid_invalid_zone_error ... ok
[INFO] [stdout] test providers::scaleway::tests::test_select_ip_empty_private_skipped ... ok
[INFO] [stdout] test providers::scaleway::tests::test_scaleway_no_zones_error ... ok
[INFO] [stdout] test providers::scaleway::tests::test_select_ip_no_ip_returns_none ... ok
[INFO] [stdout] test providers::scaleway::tests::test_select_ip_falls_back_to_private ... ok
[INFO] [stdout] test providers::scaleway::tests::test_scaleway_provider_name ... ok
[INFO] [stdout] test providers::scaleway::tests::test_select_ip_prefers_v4_over_v6 ... ok
[INFO] [stdout] test providers::scaleway::tests::test_select_ip_v6_cidr_stripped ... ok
[INFO] [stdout] test providers::sync::tests::test_build_alias ... ok
[INFO] [stdout] test providers::scaleway::tests::test_tags_preserved ... ok
[INFO] [stdout] test providers::sync::tests::test_deduplicate_alias_excluding_chain ... ok
[INFO] [stdout] test providers::sync::tests::test_build_alias_long_names ... ok
[INFO] [stdout] test providers::sync::tests::test_deduplicate_alias_excluding_none ... ok
[INFO] [stdout] test providers::sync::tests::test_find_hosts_by_provider_in_includes ... ok
[INFO] [stdout] test providers::sync::tests::test_find_hosts_by_provider_mixed_includes_and_toplevel ... ok
[INFO] [stdout] test providers::scaleway::tests::test_server_id_is_uuid_string ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name ... ok
[INFO] [stdout] test providers::sync::tests::test_build_alias_prefix_with_hyphen ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_consecutive_specials ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_dots_and_underscores ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_mixed_special_chars ... ok
[INFO] [stdout] test providers::sync::tests::test_deduplicate_alias_excluding_self ... ok
[INFO] [stdout] test providers::sync::tests::test_find_hosts_by_provider_empty_includes ... ok
[INFO] [stdout] test providers::sync::tests::test_deduplicate_alias_excluding_other ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_tabs_and_newlines ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_trailing_special ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_unicode ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_whitespace_only ... ok
[INFO] [stdout] test providers::sync::tests::test_set_host_provider_updates_existing ... ok
[INFO] [stdout] test providers::sync::tests::test_set_host_tags_empty_clears_tags ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_emoji ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_adds_group_header_on_first_host ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_numbers_only ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_single_char ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_single_special_char ... ok
[INFO] [stdout] test providers::sync::tests::test_find_hosts_by_provider_wrong_provider_name ... ok
[INFO] [stdout] test providers::scaleway::tests::test_select_ip_v6_only ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_leading_special ... ok
[INFO] [stdout] test providers::sync::tests::test_sanitize_name_long_mixed_separators ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_applies_identity_file_from_section ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_already_stale_then_remove_deleted ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_applies_user_from_section ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_adds_new_hosts ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_clears_stale_when_host_returns ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_deduplicates_alias ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_adds_host_with_metadata ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_combined_add_update_remove ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_alias_collision_dedup ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dry_run_no_mutations ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dry_run_add_count ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dedup_resolves_back_to_same_alias_unchanged ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dedup_server_id_in_response ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dry_run_remove_count ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_all_symbol_name_uses_server_fallback ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dry_run_reports_stale_count ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dry_run_update_preserves_config ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_duplicate_server_id_in_remote_skipped ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_duplicate_local_server_id_keeps_first ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dry_run_remove_excludes_included_hosts ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_empty_ip_not_added ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_empty_ip_existing_host_unchanged ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_empty_ip_with_tags_not_added ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_duplicate_user_provider_tag ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_duplicate_server_id_deduped ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_empty_remote_empty_config_noop ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dry_run_remove_count_preserves_config ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_empty_ip_existing_host_counted_unchanged ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_empty_user_not_set ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_group_header_with_existing_trailing_blank ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_dry_run_rename_no_renames_tracked ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_identity_file_set_on_new_host ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_idempotent_same_data ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_host_in_entries_map_but_alias_changed_by_another_provider ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_include_host_skips_remove ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_include_host_skips_update ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_marks_stale_when_host_disappears ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_merge_case_insensitive ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_merges_new_provider_tag_with_user_tags ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_first_migration_empty_remote_writes_sentinel ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_insert_adds_blank_line_before_next_group ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_no_double_blank_between_hosts ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_migration_cleans_overlapping_user_tags ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_no_duplicate_header_on_repeated_sync ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_no_group_header_for_second_host ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_insert_blank_line_real_world_scenario ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_metadata_order_insensitive ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_multiple_renames ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_empty_alias_prefix ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_metadata_dry_run_no_mutation ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_metadata_only_change_triggers_update ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_metadata_unchanged_no_update ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_manual_comment_survives_cleanup ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_orphaned_provider_marker_counts_unchanged ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_provider_tags_case_insensitive_no_update ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_partial_failure_no_stale_marking ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_provider_tags_case_insensitive_unchanged ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_preserves_user_tags ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_provider_tags_cleared_remotely ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_remove_all_when_remote_empty ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_provider_tags_cleared_user_tags_survive ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_remove_deleted_still_hard_deletes ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_remove_cleans_up_group_header ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_provider_tags_replaces_with_migration ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_provider_tags_roundtrip ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_no_rename_when_prefix_unchanged ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_provider_tags_exact_match_unchanged ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_remove_deletes_truly_gone_hosts ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_recognizes_include_hosts_prevents_duplicate_add ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_metadata_with_rename ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_provider_tags_with_rename ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_removes_deleted ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_remove_only_affects_own_provider ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_removes_header_when_all_hosts_deleted ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_rename_self_exclusion_no_collision ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_remove_skips_empty_ip_hosts ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_rename_skips_included_host ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_rename_dry_run_no_mutation ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_rename_and_tag_change_simultaneously ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_result_default ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_server_name_change_updates_alias ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_result_counts_add_up ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_renames_on_prefix_change ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_rename_and_ip_change_simultaneously ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_rename_stable_with_manual_collision ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_set_provider_does_not_clobber_provider_tags ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_stale_host_returns_with_new_ip ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_stale_preserves_neighboring_hosts ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_stale_result_count_includes_already_stale ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_stale_empty_ip_return_preserves_hostname ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_stale_then_purge_leaves_clean_config ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_stale_timestamp_preserved_not_refreshed ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_stale_config_byte_identical_after_clear ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_stale_host_returns_with_tag_changes ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_tag_merge_adds_new_remote_tag ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_set_provider_tags_empty_writes_sentinel ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_removes_orphan_header ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_stale_cross_provider_isolation ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_rename_and_ip_change ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_tag_merge_case_insensitive_no_duplicate ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_tag_merge_preserves_local_tags ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_tag_trimmed_remote_triggers_merge ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_unchanged ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_two_providers_independent ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_updates_changed_ip ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_upgrade_migration ... ok
[INFO] [stdout] test providers::tailscale::tests::test_auth_key_rejected ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_connected_to_control_false ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_extra_fields_ignored ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_hostname_from_name ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_tag_whitespace_trimmed_on_store ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_tags_cleared_remotely_preserved_locally ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_unicode_name_uses_ascii_fallback ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_device_no_addresses_skipped ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_top_level_host_marked_stale ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_updates_changed_metadata ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_large_batch ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_writes_provider_tags ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_without_remove_flag_keeps_deleted ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_extra_fields_ignored ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_multiple_devices ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_offline_peer_included ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_missing_authorized_defaults_true ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_response_basic ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_tags_explicit_null ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_unauthorized_skipped ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_peer_ipv6_fallback ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_online_null ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_status_no_peers ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_status_basic ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_api_tags_null ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_multiple_peers ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_peer_no_ips_skipped ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_peer_ipv4_preferred ... ok
[INFO] [stdout] test providers::tailscale::tests::test_select_ip_ipv6_fallback ... ok
[INFO] [stdout] test providers::tailscale::tests::test_select_ip_prefers_ipv4 ... ok
[INFO] [stdout] test providers::tailscale::tests::test_strip_tag_prefix ... ok
[INFO] [stdout] test providers::tailscale::tests::test_select_ip_strips_cidr ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_status_null_peer ... ok
[INFO] [stdout] test providers::tailscale::tests::test_parse_cli_tags_stripped ... ok
[INFO] [stdout] test providers::tests::test_get_provider_digitalocean ... ok
[INFO] [stdout] test providers::tests::test_display_name_all_providers ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_mixed_resolved_empty_and_missing ... ok
[INFO] [stdout] test providers::tests::test_get_provider_hetzner ... ok
[INFO] [stdout] test providers::tailscale::tests::test_select_ip_empty ... ok
[INFO] [stdout] test providers::tailscale::tests::test_tailscale_name ... ok
[INFO] [stdout] test providers::tailscale::tests::test_tailscale_short_label ... ok
[INFO] [stdout] test providers::tests::test_display_name_unknown_returns_input ... ok
[INFO] [stdout] test providers::tests::test_get_provider_all_known ... ok
[INFO] [stdout] test providers::tests::test_get_provider_all_names_resolve ... ok
[INFO] [stdout] test providers::tests::test_get_provider_case_sensitive_and_unknown ... ok
[INFO] [stdout] test providers::tests::test_get_provider_linode ... ok
[INFO] [stdout] test providers::tests::test_get_provider_proxmox ... ok
[INFO] [stdout] test providers::tests::test_get_provider_unknown_returns_none ... ok
[INFO] [stdout] test providers::tests::test_get_provider_vultr ... ok
[INFO] [stdout] test providers::tests::test_get_provider_with_config_non_proxmox_delegates ... ok
[INFO] [stdout] test providers::tests::test_get_provider_upcloud ... ok
[INFO] [stdout] test providers::tests::test_get_provider_with_config_gcp_uses_project_and_zones ... ok
[INFO] [stdout] test providers::tests::test_get_provider_with_config_all_providers ... ok
[INFO] [stdout] test providers::tests::test_http_agent_creates_agent ... ok
[INFO] [stdout] test providers::tests::test_http_agent_insecure_creates_agent ... ok
[INFO] [stdout] test providers::tests::test_http_500_maps_to_http_error ... ok
[INFO] [stdout] test providers::tests::test_http_connection_refused_maps_to_http_error ... ok
[INFO] [stdout] test providers::tests::test_http_body_reader_with_take ... ok
[INFO] [stdout] test providers::tests::test_http_429_maps_to_rate_limited ... ok
[INFO] [stdout] test providers::tests::test_http_get_json_response ... ok
[INFO] [stdout] test providers::tests::test_http_empty_json_body_returns_parse_error ... ok
[INFO] [stdout] test providers::tests::test_get_provider_with_config_unknown_returns_none ... ok
[INFO] [stdout] test providers::tests::test_http_body_reader_take_truncates ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_200_is_http ... ok
[INFO] [stdout] test providers::tests::test_http_no_redirects ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_403_is_auth_failed ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_404_is_http ... ok
[INFO] [stdout] test providers::tests::test_http_read_to_string ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_401_is_auth_failed ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_500_is_http ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_502_is_http ... ok
[INFO] [stdout] test providers::tests::test_http_post_form_encoding ... ok
[INFO] [stdout] test providers::tests::test_http_xml_deserialization_with_quick_xml ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_429_is_rate_limited ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_bad_uri ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_connection_failed ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_io_error ... ok
[INFO] [stdout] test providers::tests::test_http_get_with_custom_header ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_503_is_http ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_all_auth_codes_covered ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_all_status_codes_1xx_to_5xx ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_only_429_is_rate_limited ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_redirect_failed ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_too_many_redirects ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_timeout ... ok
[INFO] [stdout] test providers::tests::test_provider_error_debug_http ... ok
[INFO] [stdout] test providers::tests::test_provider_display_name_all ... ok
[INFO] [stdout] test providers::tests::test_provider_error_debug_partial_result ... ok
[INFO] [stdout] test providers::tests::test_map_ureq_error_non_status_is_http ... ok
[INFO] [stdout] test providers::tests::test_provider_error_display_auth ... ok
[INFO] [stdout] test providers::tests::test_provider_display_name_unknown ... ok
[INFO] [stdout] test providers::tests::test_provider_error_display_http ... ok
[INFO] [stdout] test providers::tests::test_provider_error_display_cancelled ... ok
[INFO] [stdout] test providers::tests::test_provider_error_display_parse ... ok
[INFO] [stdout] test providers::tests::test_provider_error_display_partial_result ... ok
[INFO] [stdout] test providers::tests::test_provider_host_clone ... ok
[INFO] [stdout] test providers::tests::test_provider_error_display_rate_limited ... ok
[INFO] [stdout] test providers::tests::test_provider_host_empty_fields ... ok
[INFO] [stdout] test providers::tests::test_provider_host_construction ... ok
[INFO] [stdout] test providers::tests::test_provider_names_contains_all ... ok
[INFO] [stdout] test providers::tests::test_provider_short_labels ... ok
[INFO] [stdout] test providers::tests::test_provider_names_count ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_digit_then_letters_not_stripped ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_empty ... ok
[INFO] [stdout] test providers::tests::test_provider_names_has_all_eleven ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_bare_ipv6 ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_ipv4_with_32 ... ok
[INFO] [stdout] test providers::tests::test_provider_fetch_hosts_delegates_to_cancellable ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_ipv4_with_8 ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_ipv4_passthrough ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_ipv6_full_notation ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_ipv6_with_prefix ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_ipv6_with_64 ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_just_slash ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_multiple_slashes ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_slash_without_digits ... ok
[INFO] [stdout] test providers::upcloud::tests::test_boot_disk_falls_back_to_first ... ok
[INFO] [stdout] test providers::upcloud::tests::test_collect_ips_empty_interfaces ... ok
[INFO] [stdout] test providers::upcloud::tests::test_collect_ips_filters_by_type ... ok
[INFO] [stdout] test providers::upcloud::tests::test_boot_disk_preferred_over_first_device ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_slash_with_letters ... ok
[INFO] [stdout] test providers::tests::test_strip_cidr_trailing_slash ... ok
[INFO] [stdout] test providers::upcloud::tests::test_collect_ips_multiple_addresses_on_same_interface ... ok
[INFO] [stdout] test providers::upcloud::tests::test_detail_empty_interfaces ... ok
[INFO] [stdout] test providers::upcloud::tests::test_collect_ips_no_matching_type ... ok
[INFO] [stdout] test providers::upcloud::tests::test_labels_only_no_tags ... ok
[INFO] [stdout] test providers::upcloud::tests::test_collect_ips_private_not_in_public ... ok
[INFO] [stdout] test providers::upcloud::tests::test_collect_ips_two_public_interfaces ... ok
[INFO] [stdout] test providers::upcloud::tests::test_empty_server_list ... ok
[INFO] [stdout] test providers::upcloud::tests::test_os_metadata_empty_storage_device_list ... ok
[INFO] [stdout] test providers::upcloud::tests::test_pagination_continues_when_count_equals_limit ... ok
[INFO] [stdout] test providers::upcloud::tests::test_pagination_stops_when_count_less_than_limit ... ok
[INFO] [stdout] test providers::upcloud::tests::test_parse_detail_missing_networking ... ok
[INFO] [stdout] test providers::upcloud::tests::test_os_metadata_from_storage_devices ... ok
[INFO] [stdout] test providers::upcloud::tests::test_parse_detail_with_storage_devices ... ok
[INFO] [stdout] test providers::upcloud::tests::test_os_metadata_missing_storage_devices ... ok
[INFO] [stdout] test providers::upcloud::tests::test_parse_missing_tags_and_labels ... ok
[INFO] [stdout] test providers::upcloud::tests::test_parse_server_list_response ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_across_multiple_public_interfaces ... ok
[INFO] [stdout] test providers::upcloud::tests::test_parse_server_detail_with_networking ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_empty ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_placeholder_ipv4_falls_through_to_ipv6 ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_private_only ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_multiple_public_v4_uses_first ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_skips_placeholder_ipv4 ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_both_placeholders ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_public_ipv4 ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_public_empty_addresses ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_public_ipv6_fallback ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_skips_placeholder_ipv6 ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_utility_skipped ... ok
[INFO] [stdout] test providers::upcloud::tests::test_select_ip_utility_interface_ignored ... ok
[INFO] [stdout] test providers::upcloud::tests::test_server_name_uses_title_when_present ... ok
[INFO] [stdout] test providers::upcloud::tests::test_server_uuid_is_string ... ok
[INFO] [stdout] test providers::upcloud::tests::test_tags_label_empty_value_key_only ... ok
[INFO] [stdout] test providers::upcloud::tests::test_tags_combined_and_sorted ... ok
[INFO] [stdout] test providers::upcloud::tests::test_tags_lowercased_and_sorted ... ok
[INFO] [stdout] test providers::upcloud::tests::test_tags_only_no_labels ... ok
[INFO] [stdout] test providers::upcloud::tests::test_ureq_status_403_matches_auth_pattern ... ok
[INFO] [stdout] test providers::upcloud::tests::test_ureq_status_429_matches_rate_limit_pattern ... ok
[INFO] [stdout] test providers::upcloud::tests::test_ureq_status_401_matches_auth_pattern ... ok
[INFO] [stdout] test providers::upcloud::tests::test_ureq_status_500_does_not_match_auth_pattern ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_both_placeholder_skipped ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_cursor_pagination_empty_next_stops ... ok
[INFO] [stdout] test providers::vultr::tests::test_parse_instance_response ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_cursor_pagination_has_next ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_empty_instance_list_stops ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_empty_ip_skipped ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_default_v6_empty_string ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_empty_v4_and_empty_v6 ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_empty_v4_and_valid_v6 ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_extra_fields_ignored ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_label_with_special_chars ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_meta_extra_fields_ignored ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_missing_next_link ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_multiple_instances_parsed ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_multiple_tags ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_placeholder_v4_no_v6_field ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_prefers_v4_over_v6 ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_string_id_preserved ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_tags_preserved ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_v4_zero_not_empty ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_v6_fallback ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_v6_placeholder_only ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_valid_v4_ignores_placeholder_v6 ... ok
[INFO] [stdout] test quick_add::tests::test_bare_ipv6 ... ok
[INFO] [stdout] test quick_add::tests::test_bracketed_ipv6_no_port ... ok
[INFO] [stdout] test quick_add::tests::test_bracketed_ipv6_with_port ... ok
[INFO] [stdout] test providers::upcloud::tests::test_server_name_hostname_fallback ... ok
[INFO] [stdout] test providers::upcloud::tests::test_server_name_title_preferred ... ok
[INFO] [stdout] test quick_add::tests::test_empty_user ... ok
[INFO] [stdout] test quick_add::tests::test_empty_hostname ... ok
[INFO] [stdout] test quick_add::tests::test_host_and_port ... ok
[INFO] [stdout] test quick_add::tests::test_host_only ... ok
[INFO] [stdout] test quick_add::tests::test_hostname_with_control_char ... ok
[INFO] [stdout] test quick_add::tests::test_hostname_with_space ... ok
[INFO] [stdout] test quick_add::tests::test_invalid_port_text ... ok
[INFO] [stdout] test quick_add::tests::test_looks_like_target_bare_ipv6 ... ok
[INFO] [stdout] test quick_add::tests::test_looks_like_target_bracketed_ipv6 ... ok
[INFO] [stdout] test quick_add::tests::test_looks_like_target_plain_host ... ok
[INFO] [stdout] test quick_add::tests::test_looks_like_target_with_at ... ok
[INFO] [stdout] test quick_add::tests::test_looks_like_target_with_port ... ok
[INFO] [stdout] test quick_add::tests::test_port_overflow ... ok
[INFO] [stdout] test quick_add::tests::test_port_zero ... ok
[INFO] [stdout] test quick_add::tests::test_trailing_colon ... ok
[INFO] [stdout] test quick_add::tests::test_user_and_host ... ok
[INFO] [stdout] test quick_add::tests::test_user_at_ipv6 ... ok
[INFO] [stdout] test quick_add::tests::test_user_with_control_char ... ok
[INFO] [stdout] test quick_add::tests::test_user_with_space ... ok
[INFO] [stdout] test snippet::tests::test_description_with_equals ... ok
[INFO] [stdout] test quick_add::tests::test_empty_target ... ok
[INFO] [stdout] test quick_add::tests::test_full_target ... ok
[INFO] [stdout] test snippet::tests::test_description_optional ... ok
[INFO] [stdout] test snippet::tests::test_get_not_found ... ok
[INFO] [stdout] test snippet::tests::test_get_found ... ok
[INFO] [stdout] test snippet::tests::test_name_with_equals_roundtrip ... ok
[INFO] [stdout] test snippet::tests::test_parse_command_with_equals ... ok
[INFO] [stdout] test snippet::tests::test_parse_duplicate_sections_first_wins ... ok
[INFO] [stdout] test snippet::tests::test_parse_line_without_equals_ignored ... ok
[INFO] [stdout] test snippet::tests::test_parse_multiple_snippets ... ok
[INFO] [stdout] test snippet::tests::test_parse_empty ... ok
[INFO] [stdout] test snippet::tests::test_parse_only_comments_and_blanks ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_colon_empty_default ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_adjacent ... ok
[INFO] [stdout] test snippet::tests::test_parse_comments_and_blanks ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_command_is_only_param ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_deduplicate ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_default_with_colons ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_invalid_name_skipped ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_empty_inner ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_max_20 ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_multiple ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_nested_braces_rejected ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_none ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_single ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_single_braces_ignored ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_unclosed_brace ... ok
[INFO] [stdout] test snippet::tests::test_parse_params_with_default ... ok
[INFO] [stdout] test snippet::tests::test_parse_section_without_close_bracket ... ok
[INFO] [stdout] test snippet::tests::test_parse_single_snippet ... ok
[INFO] [stdout] test snippet::tests::test_parse_snippet_without_command_skipped ... ok
[INFO] [stdout] test snippet::tests::test_parse_trailing_content_after_last_section ... ok
[INFO] [stdout] test snippet::tests::test_parse_unknown_keys_ignored ... ok
[INFO] [stdout] test snippet::tests::test_parse_whitespace_around_key_value ... ok
[INFO] [stdout] test snippet::tests::test_parse_whitespace_in_section_name ... ok
[INFO] [stdout] test snippet::tests::test_remove ... ok
[INFO] [stdout] test snippet::tests::test_remove_nonexistent_noop ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_apc_sequence ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_dcs_terminated_by_bel ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_empty ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_lone_esc_at_end ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_lone_esc_plus_letter ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_multiple_mixed_sequences ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_only_escapes ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_plain_text ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_pm_sequence ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_preserves_newlines_tabs ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_strips_c1_range ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_strips_csi ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_strips_dcs ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_strips_osc_bel ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_strips_osc_st ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_truncated_csi_no_terminator ... ok
[INFO] [stdout] test snippet::tests::test_save_roundtrip ... ok
[INFO] [stdout] test snippet::tests::test_set_multiple_then_remove_all ... ok
[INFO] [stdout] test snippet::tests::test_set_adds_new ... ok
[INFO] [stdout] test snippet::tests::test_set_overwrite_preserves_order ... ok
[INFO] [stdout] test snippet::tests::test_set_replaces_existing ... ok
[INFO] [stdout] test snippet::tests::test_shell_escape_empty ... ok
[INFO] [stdout] test snippet::tests::test_shell_escape_consecutive_single_quotes ... ok
[INFO] [stdout] test snippet::tests::test_shell_escape_only_single_quotes ... ok
[INFO] [stdout] test snippet::tests::test_shell_escape_simple ... ok
[INFO] [stdout] test snippet::tests::test_shell_escape_with_dollar ... ok
[INFO] [stdout] test snippet::tests::test_shell_escape_with_semicolon ... ok
[INFO] [stdout] test snippet::tests::test_shell_escape_with_single_quote ... ok
[INFO] [stdout] test snippet::tests::test_shell_escape_with_spaces ... ok
[INFO] [stdout] test snippet::tests::test_snippet_command_with_pipes_and_redirects ... ok
[INFO] [stdout] test snippet::tests::test_snippet_with_complex_command ... ok
[INFO] [stdout] test snippet::tests::test_substitute_adjacent_params ... ok
[INFO] [stdout] test snippet::tests::test_substitute_default_also_escaped ... ok
[INFO] [stdout] test snippet::tests::test_substitute_escapes_injection ... ok
[INFO] [stdout] test snippet::tests::test_save_to_temp_file ... ok
[INFO] [stdout] test snippet::tests::test_substitute_no_params_passthrough ... ok
[INFO] [stdout] test snippet::tests::test_substitute_no_recursive_expansion ... ok
[INFO] [stdout] test snippet::tests::test_substitute_non_ascii_around_params ... ok
[INFO] [stdout] test snippet::tests::test_substitute_empty_value_falls_to_default ... ok
[INFO] [stdout] test snippet::tests::test_substitute_missing_param_no_default ... ok
[INFO] [stdout] test snippet::tests::test_substitute_simple ... ok
[INFO] [stdout] test snippet::tests::test_substitute_overrides_default ... ok
[INFO] [stdout] test snippet::tests::test_substitute_with_default ... ok
[INFO] [stdout] test snippet::tests::test_validate_command_control_chars ... ok
[INFO] [stdout] test snippet::tests::test_validate_command_empty ... ok
[INFO] [stdout] test snippet::tests::test_validate_command_valid ... ok
[INFO] [stdout] test snippet::tests::test_validate_command_whitespace_only ... ok
[INFO] [stdout] test snippet::tests::test_validate_command_with_newline ... ok
[INFO] [stdout] test snippet::tests::test_validate_name_control_chars ... ok
[INFO] [stdout] test snippet::tests::test_validate_name_empty ... ok
[INFO] [stdout] test snippet::tests::test_validate_command_with_tab ... ok
[INFO] [stdout] test snippet::tests::test_validate_name_newline ... ok
[INFO] [stdout] test snippet::tests::test_validate_name_special_chars ... ok
[INFO] [stdout] test snippet::tests::test_validate_name_whitespace ... ok
[INFO] [stdout] test snippet::tests::test_validate_name_valid ... ok
[INFO] [stdout] test snippet::tests::test_validate_name_with_equals ... ok
[INFO] [stdout] test snippet::tests::test_validate_param_name_hyphen_only ... ok
[INFO] [stdout] test snippet::tests::test_validate_param_name_rejects_braces ... ok
[INFO] [stdout] test snippet::tests::test_validate_param_name_rejects_dot ... ok
[INFO] [stdout] test snippet::tests::test_validate_param_name_rejects_quote ... ok
[INFO] [stdout] test snippet::tests::test_validate_param_name_rejects_whitespace ... ok
[INFO] [stdout] test snippet::tests::test_validate_param_name_underscore_only ... ok
[INFO] [stdout] test snippet::tests::test_validate_param_name_unicode ... ok
[INFO] [stdout] test snippet::tests::test_validate_param_name_valid ... ok
[INFO] [stdout] test ssh_config::model::tests::add_forward_multi_pattern_host ... ok
[INFO] [stdout] test ssh_config::model::tests::add_forward_preserves_indentation ... ok
[INFO] [stdout] test ssh_config::model::tests::add_forward_to_empty_block ... ok
[INFO] [stdout] test ssh_config::model::tests::add_host_appends_when_no_wildcards ... ok
[INFO] [stdout] test ssh_config::model::tests::add_host_appends_when_wildcard_at_beginning ... ok
[INFO] [stdout] test ssh_config::model::tests::add_host_inserts_before_trailing_pattern_host ... ok
[INFO] [stdout] test ssh_config::model::tests::add_host_inserts_before_trailing_wildcard ... ok
[INFO] [stdout] test ssh_config::model::tests::add_host_no_triple_blank_lines ... ok
[INFO] [stdout] test ssh_config::model::tests::add_forward_inserts_directive ... ok
[INFO] [stdout] test ssh_config::model::tests::add_multiple_forwards_same_type ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_among_many_purple_comments ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_coexists_with_provider_comment ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_does_not_interfere_with_host_matching ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_host_with_multi_pattern_is_skipped ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_idempotent_set_same_value ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_ignores_empty_value ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_ignores_non_askpass_purple_comments ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_mixed_with_tunnel_directives ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_only_on_first_matching_host ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_returns_bw_source ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_returns_custom_command ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_returns_keychain ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_returns_none_when_absent ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_returns_op_uri ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_returns_pass_source ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_returns_vault_with_field ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_survives_directive_reorder ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_tab_indent_preserved ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_with_crlf_line_endings ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_with_long_op_uri ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_with_value_containing_equals ... ok
[INFO] [stdout] test ssh_config::model::tests::askpass_with_value_containing_hash ... ok
[INFO] [stdout] test ssh_config::model::tests::clear_host_stale_delegates ... ok
[INFO] [stdout] test ssh_config::model::tests::clear_host_stale_nonexistent_alias_is_noop ... ok
[INFO] [stdout] test ssh_config::model::tests::clear_stale_removes_bare_comment ... ok
[INFO] [stdout] test ssh_config::model::tests::clear_stale_removes_comment ... ok
[INFO] [stdout] test ssh_config::model::tests::clear_stale_when_absent_is_noop ... ok
[INFO] [stdout] test ssh_config::model::tests::delete_host_undoable_keeps_group_header_for_undo ... ok
[INFO] [stdout] test ssh_config::model::tests::delete_host_undoable_preserves_header_when_others_remain ... ok
[INFO] [stdout] test ssh_config::model::tests::delete_host_undoable_returns_original_position_for_undo ... ok
[INFO] [stdout] test ssh_config::model::tests::delete_last_provider_host_removes_group_header ... ok
[INFO] [stdout] test ssh_config::model::tests::delete_non_provider_host_leaves_group_headers ... ok
[INFO] [stdout] test ssh_config::model::tests::delete_one_of_multiple_provider_hosts_preserves_group_header ... ok
[INFO] [stdout] test ssh_config::model::tests::edit_tunnel_detects_duplicate_after_remove ... ok
[INFO] [stdout] test ssh_config::model::tests::find_tunnel_directives_multi_pattern_host ... ok
[INFO] [stdout] test snippet::tests::test_validate_param_name_empty ... ok
[INFO] [stdout] test ssh_config::model::tests::find_tunnel_directives_no_match ... ok
[INFO] [stdout] test ssh_config::model::tests::clear_stale_preserves_other_purple_comments ... ok
[INFO] [stdout] test ssh_config::model::tests::has_forward_exact_match ... ok
[INFO] [stdout] test ssh_config::model::tests::has_forward_finds_match ... ok
[INFO] [stdout] test ssh_config::model::tests::has_forward_multi_pattern_host ... ok
[INFO] [stdout] test ssh_config::model::tests::has_forward_no_match ... ok
[INFO] [stdout] test ssh_config::model::tests::has_forward_tab_whitespace_normalized ... ok
[INFO] [stdout] test ssh_config::model::tests::has_forward_whitespace_normalized ... ok
[INFO] [stdout] test ssh_config::model::tests::has_tunnels_true_with_forward ... ok
[INFO] [stdout] test ssh_config::model::tests::host_entry_tunnel_count_populated ... ok
[INFO] [stdout] test ssh_config::model::tests::is_included_host_false_for_main_config ... ok
[INFO] [stdout] test ssh_config::model::tests::is_included_host_false_for_nonexistent ... ok
[INFO] [stdout] test ssh_config::model::tests::is_included_host_multi_pattern_main_config ... ok
[INFO] [stdout] test ssh_config::model::tests::meta_empty_when_no_comment ... ok
[INFO] [stdout] test ssh_config::model::tests::meta_parses_key_value_pairs ... ok
[INFO] [stdout] test ssh_config::model::tests::meta_in_host_entry ... ok
[INFO] [stdout] test ssh_config::model::tests::meta_replaces_existing ... ok
[INFO] [stdout] test ssh_config::model::tests::has_forward_case_insensitive_key ... ok
[INFO] [stdout] test ssh_config::model::tests::meta_round_trip ... ok
[INFO] [stdout] test ssh_config::model::tests::meta_removed_when_empty ... ok
[INFO] [stdout] test ssh_config::model::tests::meta_sanitizes_commas_in_values ... ok
[INFO] [stdout] test ssh_config::model::tests::provider_group_display_name_matches_providers_mod ... ok
[INFO] [stdout] test ssh_config::model::tests::multiple_hosts_independent_askpass ... ok
[INFO] [stdout] test ssh_config::model::tests::remove_forward_multi_pattern_host ... ok
[INFO] [stdout] test ssh_config::model::tests::remove_forward_case_insensitive_key_match ... ok
[INFO] [stdout] test ssh_config::model::tests::remove_forward_no_match_is_noop ... ok
[INFO] [stdout] test ssh_config::model::tests::remove_forward_leaves_other_directives ... ok
[INFO] [stdout] test ssh_config::model::tests::remove_forward_removes_exact_match ... ok
[INFO] [stdout] test ssh_config::model::tests::remove_forward_returns_false_for_unknown_host ... ok
[INFO] [stdout] test ssh_config::model::tests::remove_forward_returns_true_on_match ... ok
[INFO] [stdout] test ssh_config::model::tests::remove_forward_returns_false_on_no_match ... ok
[INFO] [stdout] test ssh_config::model::tests::remove_forward_tab_whitespace_normalized ... ok
[INFO] [stdout] test ssh_config::model::tests::repair_absorbed_group_comment ... ok
[INFO] [stdout] test ssh_config::model::tests::repair_clean_config_returns_zero ... ok
[INFO] [stdout] test ssh_config::model::tests::repair_roundtrip_serializes_correctly ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_adds_comment ... ok
[INFO] [stdout] test ssh_config::model::tests::repair_strips_trailing_blanks_before_group ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_empty_removes_comment ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_custom_command_with_percent ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_does_not_remove_tags ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_long_op_uri ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_idempotent_same_value ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_on_host_with_many_directives ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_preserves_indent ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_on_nonexistent_host ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_preserves_other_directives ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_preserves_other_non_directive_comments ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_then_clear_then_set_again ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_vault_with_hash_field ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_with_equals_in_value ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_with_hash_in_value ... ok
[INFO] [stdout] test ssh_config::model::tests::set_host_stale_delegates ... ok
[INFO] [stdout] test ssh_config::model::tests::set_host_stale_nonexistent_alias_is_noop ... ok
[INFO] [stdout] test ssh_config::model::tests::set_stale_adds_comment ... ok
[INFO] [stdout] test ssh_config::model::tests::set_stale_four_space_indent ... ok
[INFO] [stdout] test ssh_config::model::tests::set_stale_preserves_indent ... ok
[INFO] [stdout] test ssh_config::model::tests::set_stale_preserves_other_purple_comments ... ok
[INFO] [stdout] test ssh_config::model::tests::set_stale_removes_multiple_stale_comments ... ok
[INFO] [stdout] test ssh_config::model::tests::set_stale_replaces_existing ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_absent_in_host_entry ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_coexists_with_other_annotations ... ok
[INFO] [stdout] test ssh_config::model::tests::set_askpass_replaces_existing ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_does_not_accumulate_blank_lines ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_hosts_collects_all ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_does_not_match_similar_comments ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_hosts_empty_config ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_hosts_no_stale ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_in_host_entry ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_multiple_comments_first_wins ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_on_last_host_preserves_trailing_newline ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_preserves_all_directives_and_comments ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_returns_none_for_malformed ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_preserves_blank_line_before_group_header ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_preserves_blank_line_between_hosts ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_returns_none_when_absent ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_roundtrip ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_returns_timestamp ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_set_and_clear_is_byte_identical ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_timestamp_zero ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_with_crlf_preserves_line_endings ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_with_u64_max ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_with_u64_overflow ... ok
[INFO] [stdout] test ssh_config::model::tests::stale_with_whitespace_in_timestamp ... ok
[INFO] [stdout] test ssh_config::model::tests::test_has_provider_tags_comment_absent ... ok
[INFO] [stdout] test ssh_config::model::tests::test_has_provider_tags_comment_present ... ok
[INFO] [stdout] test ssh_config::model::tests::test_has_provider_tags_comment_sentinel ... ok
[INFO] [stdout] test ssh_config::model::tests::test_provider_tags_empty ... ok
[INFO] [stdout] test ssh_config::model::tests::test_provider_tags_parsing ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_multiple_hosts_disappear ... ok
[INFO] [stdout] test ssh_config::model::tests::test_sanitize_tag_strips_control_chars ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_tag_order_insensitive ... ok
[INFO] [stdout] test ssh_config::model::tests::test_sanitize_tag_truncates_long ... ok
[INFO] [stdout] test providers::sync::tests::test_sync_updates_changed_tags ... ok
[INFO] [stdout] test ssh_config::model::tests::test_set_askpass_does_not_delete_similar_comments ... ok
[INFO] [stdout] test providers::tests::test_get_provider_with_config_proxmox_uses_url ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_default_tags_empty ... ok
[INFO] [stdout] test ssh_config::model::tests::test_set_meta_sanitizes_control_chars ... ok
[INFO] [stdout] test providers::tests::test_http_401_maps_to_auth_failed ... ok
[INFO] [stdout] test providers::tests::test_http_403_maps_to_auth_failed ... ok
[INFO] [stdout] test ssh_config::model::tests::test_set_provider_tags_does_not_delete_user_tags ... ok
[INFO] [stdout] test ssh_config::model::tests::to_entry_includes_askpass ... ok
[INFO] [stdout] test ssh_config::model::tests::tunnel_count_case_insensitive ... ok
[INFO] [stdout] test ssh_config::model::tests::to_entry_askpass_none_when_absent ... ok
[INFO] [stdout] test ssh_config::model::tests::tunnel_count_zero_for_no_forwards ... ok
[INFO] [stdout] test ssh_config::model::tests::tunnel_count_counts_forwards ... ok
[INFO] [stdout] test ssh_config::model::tests::tunnel_directives_extracts_all_types ... ok
[INFO] [stdout] test ssh_config::model::tests::tunnel_directives_extracts_forwards ... ok
[INFO] [stdout] test providers::tests::test_http_get_with_bearer_header ... ok
[INFO] [stdout] test ssh_config::model::tests::test_set_meta_does_not_delete_similar_comments ... ok
[INFO] [stdout] test providers::tests::test_http_invalid_json_returns_parse_error ... ok
[INFO] [stdout] test providers::tests::test_http_multiple_headers ... ok
[INFO] [stdout] test providers::tests::test_http_nested_json_deserialization ... ok
[INFO] [stdout] test snippet::tests::test_sanitize_strips_control_chars ... ok
[INFO] [stdout] test ssh_config::model::tests::test_sanitize_tag_strips_bidi ... ok
[INFO] [stdout] test ssh_config::model::tests::test_sanitize_tag_strips_commas ... ok
[INFO] [stdout] test ssh_config::model::tests::test_sanitize_tag_preserves_unicode ... ok
[INFO] [stdout] test providers::vultr::tests::test_vultr_empty_label ... ok
[INFO] [stdout] test ssh_config::model::tests::upsert_preserves_space_separator_when_value_contains_equals ... ok
[INFO] [stdout] test ssh_config::model::tests::upsert_preserves_spaced_equals_separator ... ok
[INFO] [stdout] test ssh_config::model::tests::tunnel_directives_skips_malformed ... ok
[INFO] [stdout] test ssh_config::model::tests::upsert_preserves_equals_separator ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_basic_host ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_comments_preserved ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_equals_in_value_not_treated_as_separator ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_equals_syntax_key_value ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_expand_env_vars_basic ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_expand_env_vars_dollar_without_brace ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_expand_env_vars_no_vars ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_expand_env_vars_unclosed_brace ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_expand_env_vars_unknown_preserved ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_empty_config ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_expand_env_vars_multiple ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_host_equals_case_insensitive ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_host_equals_syntax ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_host_space_equals_space_syntax ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_host_with_tab_separator ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_hostname_equals_not_parsed_as_host ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_identity_file_and_proxy_jump ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_include_with_space_equals_separator ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_include_round_trip ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_include_with_equals_separator ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_inline_comment_outside_quotes_stripped ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_match_block_is_global_line ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_match_at_start_of_file ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_host_equals_space_syntax ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_match_block_round_trip ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_host_inline_comment_stripped ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_inline_comment_inside_quotes_preserved ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_include_with_tab_separator ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_include_directive_parsed ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_max_include_depth_matches_openssh ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_multiple_hosts ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_split_include_patterns_multiple_unquoted ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_split_include_patterns_quoted_no_spaces ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_split_include_patterns_single_unquoted ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_split_include_patterns_quoted_with_spaces ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_ssh_command ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_unicode_multibyte_line_no_panic ... ok
[INFO] [stdout] test ssh_config::writer::tests::test_delete_host_serializes ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_wildcard_host_filtered ... ok
[INFO] [stdout] test ssh_config::writer::tests::test_round_trip_with_comments ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_match_block_survives_host_deletion ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_unknown_directives_preserved ... ok
[INFO] [stdout] test ssh_config::writer::tests::test_add_host_serializes ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_split_include_patterns_mixed ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_host_space_equals_syntax ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_unicode_comment_no_panic ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_hostname_not_confused_with_host ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_include_with_space_equals_space_separator ... ok
[INFO] [stdout] test ssh_config::writer::tests::test_update_host_preserves_unknown_directives ... ok
[INFO] [stdout] test ssh_config::writer::tests::test_round_trip_basic ... ok
[INFO] [stdout] test ssh_config::writer::tests::test_round_trip_with_globals_and_wildcards ... ok
[INFO] [stdout] test ssh_config::writer::tests::test_update_host_serializes ... ok
[INFO] [stdout] test ssh_keys::tests::test_find_linked_hosts_no_identity_file_links_to_all ... ok
[INFO] [stdout] test ssh_config::model::tests::test_set_tags_does_not_delete_provider_tags ... ok
[INFO] [stdout] test ssh_keys::tests::test_parse_keygen_output_no_comment ... ok
[INFO] [stdout] test ssh_keys::tests::test_parse_keygen_output_no_type_parens ... ok
[INFO] [stdout] test ssh_keys::tests::test_parse_keygen_output_rsa ... ok
[INFO] [stdout] test ssh_keys::tests::test_parse_keygen_output_too_short ... ok
[INFO] [stdout] test ssh_keys::tests::test_type_display ... ok
[INFO] [stdout] test tests::cheat_sheet_i_after_s_and_k ... ok
[INFO] [stdout] test tests::app_known_hosts_count_default_zero ... ok
[INFO] [stdout] test tests::confirm_import_arrow_key_stays ... ok
[INFO] [stdout] test tests::cheat_sheet_contains_import_entry ... ok
[INFO] [stdout] test tests::confirm_import_esc_goes_to_host_list ... ok
[INFO] [stdout] test tests::confirm_import_dialog_has_same_structure_as_confirm_delete ... ok
[INFO] [stdout] test ssh_keys::tests::test_find_linked_hosts_display_path ... ok
[INFO] [stdout] test ssh_keys::tests::test_find_linked_hosts_wrong_identity_file ... ok
[INFO] [stdout] test ssh_keys::tests::test_parse_keygen_output_comment_with_spaces ... ok
[INFO] [stdout] test ssh_keys::tests::test_parse_keygen_output_ed25519 ... ok
[INFO] [stdout] test tests::confirm_import_enter_stays ... ok
[INFO] [stdout] test ssh_config::parser::tests::test_host_multi_pattern_with_inline_comment ... ok
[INFO] [stdout] test ssh_keys::tests::test_find_linked_hosts_full_path ... ok
[INFO] [stdout] test tests::confirm_import_preserves_count ... ok
[INFO] [stdout] test tests::confirm_import_q_stays ... ok
[INFO] [stdout] test tests::empty_state_shown_during_confirm_import ... ok
[INFO] [stdout] test tests::empty_state_shown_during_host_list ... ok
[INFO] [stdout] test tests::confirm_import_tab_stays ... ok
[INFO] [stdout] test tests::confirm_import_question_mark_stays ... ok
[INFO] [stdout] test tests::confirm_import_y_transitions_to_host_list ... ok
[INFO] [stdout] test tests::confirm_import_random_key_stays ... ok
[INFO] [stdout] test tests::empty_state_hidden_during_welcome ... ok
[INFO] [stdout] test tests::known_hosts_count_not_reset_on_import_error ... ok
[INFO] [stdout] test tests::first_launch_has_backup_true_when_config_exists ... ok
[INFO] [stdout] test tests::known_hosts_count_reset_on_success ... ok
[INFO] [stdout] test tests::first_launch_no_config_file_skips_backup ... ok
[INFO] [stdout] test tests::known_hosts_count_not_reset_on_write_failure ... ok
[INFO] [stdout] test tests::host_list_i_key_sets_error_when_no_hosts_available ... ok
[INFO] [stdout] test tests::confirm_import_n_goes_to_host_list ... ok
[INFO] [stdout] test tests::welcome_enter_goes_to_host_list ... ok
[INFO] [stdout] test tests::test_sync_summary_still_syncing ... ok
[INFO] [stdout] test tests::welcome_i_with_known_hosts_transitions_to_host_list ... ok
[INFO] [stdout] test tests::import_write_failure_rolls_back_config ... ok
[INFO] [stdout] test tests::welcome_esc_goes_to_host_list ... ok
[INFO] [stdout] test tests::welcome_arrow_key_goes_to_host_list ... ok
[INFO] [stdout] test tests::welcome_i_without_known_hosts_goes_to_host_list ... ok
[INFO] [stdout] test tests::first_launch_returns_none_on_second_call ... ok
[INFO] [stdout] test tests::test_sync_summary_with_errors ... ok
[INFO] [stdout] test tests::first_launch_has_backup_false_without_config ... ok
[INFO] [stdout] test tests::first_launch_creates_dir_and_backup ... ok
[INFO] [stdout] test tests::welcome_preserves_all_fields ... ok
[INFO] [stdout] test tests::welcome_random_char_goes_to_host_list ... ok
[INFO] [stdout] test tests::host_list_i_key_does_not_panic ... ok
[INFO] [stdout] test tests::test_sync_summary_errors_persist_while_syncing ... ok
[INFO] [stdout] test tests::welcome_question_mark_goes_to_help ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_bare_ipv6_remote ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_dynamic_non_numeric ... ok
[INFO] [stdout] test tests::welcome_tab_goes_to_host_list ... ok
[INFO] [stdout] test tunnel::tests::display_ipv6_brackets ... ok
[INFO] [stdout] test tunnel::tests::display_dynamic ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_dynamic_empty_port ... ok
[INFO] [stdout] test tunnel::tests::display_local ... ok
[INFO] [stdout] test tests::welcome_q_goes_to_host_list ... ok
[INFO] [stdout] test tests::first_launch_backup_not_overwritten ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_dynamic ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_error_bind_port_0_message ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_error_dynamic_invalid_port_message ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_bind_port_0_rejected ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_error_empty_remote_host_message ... ok
[INFO] [stdout] test tests::test_sync_summary_all_done ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_empty_bind_port ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_empty_remote_host ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_error_remote_port_0_message ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_error_unknown_type_message ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_extra_colons ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_error_whitespace_in_remote_host ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_error_no_colon_message ... ok
[INFO] [stdout] test tests::import_all_duplicates_sets_status ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_dynamic_trailing_content ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_lowercase ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_local_ipv6_remote ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_missing_parts ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_no_colons ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_multi_char_type ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_remote ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_remote_port_0_rejected ... ok
[INFO] [stdout] test tunnel::tests::parse_dynamic_forward_port_only ... ok
[INFO] [stdout] test tunnel::tests::parse_empty_brackets ... ok
[INFO] [stdout] test tunnel::tests::parse_invalid_value_returns_none ... ok
[INFO] [stdout] test tunnel::tests::parse_empty_string ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_remote_ipv6_remote ... ok
[INFO] [stdout] test tunnel::tests::parse_mismatched_bracket ... ok
[INFO] [stdout] test tunnel::tests::parse_missing_remote_host ... ok
[INFO] [stdout] test tunnel::tests::parse_missing_remote_port ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_invalid ... ok
[INFO] [stdout] test tunnel::tests::parse_ipv6_bind_address ... ok
[INFO] [stdout] test tunnel::tests::parse_leading_trailing_whitespace ... ok
[INFO] [stdout] test tunnel::tests::parse_multiple_spaces_between_parts ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_local ... ok
[INFO] [stdout] test tunnel::tests::parse_local_forward_port_only ... ok
[INFO] [stdout] test tunnel::tests::from_cli_spec_port_overflow ... ok
[INFO] [stdout] test tunnel::tests::parse_port_1_minimum ... ok
[INFO] [stdout] test tunnel::tests::parse_port_65536_rejected ... ok
[INFO] [stdout] test tunnel::tests::parse_port_0_accepted ... ok
[INFO] [stdout] test tunnel::tests::parse_port_negative_rejected ... ok
[INFO] [stdout] test tests::import_successful_sets_success_status ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_ipv6_remote ... ok
[INFO] [stdout] test tunnel::tests::parse_remote_forward ... ok
[INFO] [stdout] test tunnel::tests::parse_single_word ... ok
[INFO] [stdout] test tunnel::tests::parse_tab_between_parts ... ok
[INFO] [stdout] test tunnel::tests::parse_unknown_directive_returns_none ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_dynamic_forward ... ok
[INFO] [stdout] test tunnel::tests::parse_dynamic_forward_with_bind_address ... ok
[INFO] [stdout] test tunnel::tests::parse_high_port_numbers ... ok
[INFO] [stdout] test tunnel::tests::parse_local_forward_with_bind_address ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_ipv6_bind ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_dynamic_with_bind ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_ipv6_both ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_ipv6_dynamic ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_local_forward ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_remote_forward ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_local_forward_with_bind ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_askpass_all_source_types_trigger ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_askpass_none_does_not_set_env ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_askpass_require_is_prefer ... ok
[INFO] [stdout] test tunnel::tests::roundtrip_remote_forward_with_bind ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_askpass_some_triggers_env_setup ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_sets_config_path_env ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_stdin_is_null ... ok
[INFO] [stdout] test tunnel::tests::to_directive_value_dynamic ... ok
[INFO] [stdout] test tunnel::tests::to_directive_value_ipv6_bind ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_uses_dash_n_flag ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_askpass_empty_string_still_triggers ... ok
[INFO] [stdout] test tunnel::tests::to_directive_value_local ... ok
[INFO] [stdout] test tunnel::tests::to_directive_value_ipv6_both ... ok
[INFO] [stdout] test tunnel::tests::tunnel_type_cycle ... ok
[INFO] [stdout] test tunnel::tests::to_directive_value_local_with_bind ... ok
[INFO] [stdout] test tunnel::tests::to_directive_value_ipv6_remote ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::confirm_import_pluralization_multiple ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::test_purge_stale_pluralization_multiple_no_provider ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::test_purge_stale_pluralization_single_with_provider ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::test_purge_stale_pluralization_single_no_provider ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::confirm_import_pluralization_single ... ok
[INFO] [stdout] test tunnel::tests::to_directive_value_ipv6_dynamic ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::welcome_height_hosts_backup_with_known ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::welcome_height_hosts_no_backup_no_known ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::welcome_height_hosts_no_backup_with_known ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::welcome_height_no_hosts_backup_no_known ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::welcome_height_no_hosts_no_backup_with_known ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::welcome_height_no_hosts_no_backup_no_known ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::welcome_height_single_known_host ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::welcome_hosts_pluralization_multiple ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::welcome_height_no_hosts_backup_with_known ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::welcome_known_hosts_pluralization_multiple ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::welcome_known_hosts_pluralization_single ... ok
[INFO] [stdout] test ui::detail_panel::tests::proxy_chain_empty_hops_in_comma_list ... ok
[INFO] [stdout] test ui::detail_panel::tests::proxy_chain_empty_proxyjump ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::test_purge_stale_pluralization_with_provider ... ok
[INFO] [stdout] test ui::detail_panel::tests::proxy_chain_host_not_in_config ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::welcome_height_hosts_backup_no_known ... ok
[INFO] [stdout] test ui::detail_panel::tests::proxy_chain_comma_separated ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::welcome_hosts_pluralization_single ... ok
[INFO] [stdout] test ui::confirm_dialog::tests::welcome_height_single_host ... ok
[INFO] [stdout] test ui::detail_panel::tests::proxy_chain_loop_detection ... ok
[INFO] [stdout] test ui::detail_panel::tests::proxy_chain_max_depth ... ok
[INFO] [stdout] test ui::detail_panel::tests::sparkline_365_day_boundary_selects_1y ... ok
[INFO] [stdout] test ui::detail_panel::tests::sparkline_all_outside_range ... ok
[INFO] [stdout] test ui::detail_panel::tests::proxy_chain_mixed_known_unknown ... ok
[INFO] [stdout] test ui::detail_panel::tests::sparkline_all_in_one_bucket ... ok
[INFO] [stdout] test ui::detail_panel::tests::sparkline_auto_scales_to_data_range ... ok
[INFO] [stdout] test ui::detail_panel::tests::sparkline_axis_labels ... ok
[INFO] [stdout] test ui::detail_panel::tests::proxy_chain_single_hop ... ok
[INFO] [stdout] test ui::detail_panel::tests::sparkline_midpoint_label_hidden_at_narrow_width ... ok
[INFO] [stdout] test ui::detail_panel::tests::proxy_chain_none_stops ... ok
[INFO] [stdout] test ui::detail_panel::tests::sparkline_empty_timestamps ... ok
[INFO] [stdout] test ui::detail_panel::tests::sparkline_narrow_width ... ok
[INFO] [stdout] test ui::detail_panel::tests::sparkline_rendered_with_dotted_baseline ... ok
[INFO] [stdout] test ui::detail_panel::tests::sparkline_single_timestamp ... ok
[INFO] [stdout] test ui::detail_panel::tests::sparkline_two_rows_for_high_variance ... ok
[INFO] [stdout] test ui::detail_panel::tests::proxy_chain_multi_hop ... ok
[INFO] [stdout] test ui::detail_panel::tests::sparkline_shown_above_threshold ... ok
[INFO] [stdout] test ui::containers::tests::layout_has_spacer_between_content_and_footer ... ok
[INFO] [stdout] test ui::containers::tests::layout_with_header_has_spacer ... ok
[INFO] [stdout] test ui::detail_panel::tests::sparkline_midpoint_label_shown_at_normal_width ... ok
[INFO] [stdout] test ui::detail_panel::tests::sparkline_multiple_buckets ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_does_not_set_bw_session ... ok
[INFO] [stdout] test ui::detail_panel::tests::wrap_tags_empty ... ok
[INFO] [stdout] test tunnel::tests::start_tunnel_env_var_names_match_connection ... ok
[INFO] [stdout] test ui::help::tests::context_title_key_list_returns_ssh_keys ... ok
[INFO] [stdout] test ui::help::tests::context_title_providers_returns_providers ... ok
[INFO] [stdout] test ui::containers::tests::layout_with_action_row ... ok
[INFO] [stdout] test ui::detail_panel::tests::wrap_tags_exact_fit ... ok
[INFO] [stdout] test ui::detail_panel::tests::sparkline_shown_at_threshold ... ok
[INFO] [stdout] test ui::detail_panel::tests::wrap_tags_exact_overflow ... ok
[INFO] [stdout] test ui::detail_panel::tests::wrap_tags_one_per_row_when_narrow ... ok
[INFO] [stdout] test ui::detail_panel::tests::wrap_tags_single_row ... ok
[INFO] [stdout] test ui::detail_panel::tests::wrap_tags_wraps_to_second_row ... ok
[INFO] [stdout] test ui::file_browser::tests::confirm_dialog_layout_has_spacer ... ok
[INFO] [stdout] test ui::file_browser::tests::error_dialog_layout_has_spacer ... ok
[INFO] [stdout] test ui::file_browser::tests::main_layout_has_spacer_between_filelist_and_footer ... ok
[INFO] [stdout] test ui::help::tests::containers_produces_content ... ok
[INFO] [stdout] test tunnel::tests::tunnel_type_from_directive_key ... ok
[INFO] [stdout] test ui::help::tests::file_browser_produces_content ... ok
[INFO] [stdout] test ui::help::tests::help_line_has_right_aligned_key ... ok
[INFO] [stdout] test ui::help::tests::help_line_description_is_dim ... ok
[INFO] [stdout] test ui::help::tests::host_list_produces_two_column_groups ... ok
[INFO] [stdout] test ui::help::tests::section_header_is_bold ... ok
[INFO] [stdout] test ui::help::tests::host_list_col2_contains_all_tool_shortcuts ... ok
[INFO] [stdout] test ui::help::tests::snippet_picker_produces_content ... ok
[INFO] [stdout] test ui::help::tests::compact_layout_has_spacer_and_footer ... ok
[INFO] [stdout] test ui::help::tests::key_list_produces_content ... ok
[INFO] [stdout] test ui::host_detail::tests::height_includes_spacer_before_footer ... ok
[INFO] [stdout] test ui::help::tests::context_title_tag_picker_returns_tags ... ok
[INFO] [stdout] test ui::help::tests::providers_produces_content ... ok
[INFO] [stdout] test ui::help::tests::context_title_unknown_screen_returns_help ... ok
[INFO] [stdout] test ui::help::tests::overlay_title_matches_context ... ok
[INFO] [stdout] test ui::help::tests::tag_picker_produces_content ... ok
[INFO] [stdout] test ui::help::tests::host_list_col1_contains_navigate_view_forms ... ok
[INFO] [stdout] test ui::help::tests::tunnels_produces_content ... ok
[INFO] [stdout] test ui::host_form::tests::password_picker_layout_has_spacer ... ok
[INFO] [stdout] test ui::help::tests::section_header_rule_width_matches_label ... ok
[INFO] [stdout] test ui::host_list::tests::label_falls_back_when_very_narrow ... ok
[INFO] [stdout] test ui::help::tests::host_list_layout_has_spacers_around_footer ... ok
[INFO] [stdout] test ui::host_list::tests::label_brew_hint ... ok
[INFO] [stdout] test ui::host_list::tests::label_no_headline ... ok
[INFO] [stdout] test ui::host_list::tests::label_truncates_at_various_widths ... ok
[INFO] [stdout] test ui::host_list::tests::test_columns_compute_hides_tags_first ... ok
[INFO] [stdout] test ui::host_list::tests::test_columns_compute_flex_gap ... ok
[INFO] [stdout] test ui::host_list::tests::test_columns_compute_host_shrinks ... ok
[INFO] [stdout] test ui::help::tests::snippet_output_produces_content ... ok
[INFO] [stdout] test ui::host_list::tests::label_fits_fully ... ok
[INFO] [stdout] test ui::host_list::tests::label_zero_width ... ok
[INFO] [stdout] test ui::host_list::tests::layout_has_spacer_between_list_and_footer ... ok
[INFO] [stdout] test ui::host_list::tests::layout_with_search_has_spacer ... ok
[INFO] [stdout] test ui::host_list::tests::test_footer_spans_stale_single ... ok
[INFO] [stdout] test ui::host_list::tests::test_footer_spans_with_grouping_no_indicator ... ok
[INFO] [stdout] test ui::host_list::tests::test_footer_spans_no_stale ... ok
[INFO] [stdout] test ui::host_list::tests::test_footer_spans_with_stale_hosts ... ok
[INFO] [stdout] test ui::host_list::tests::test_padded_nonzero ... ok
[INFO] [stdout] test ui::host_list::tests::test_padded_zero ... ok
[INFO] [stdout] test ui::provider_list::tests::provider_list_layout_has_spacer ... ok
[INFO] [stdout] test ui::key_list::tests::layout_has_spacer_between_list_and_footer ... ok
[INFO] [stdout] test ui::provider_list::tests::truncate_ascii ... ok
[INFO] [stdout] test ui::provider_list::tests::truncate_exact_fit ... ok
[INFO] [stdout] test ui::provider_list::tests::truncate_wide_cjk ... ok
[INFO] [stdout] test ui::provider_list::tests::truncate_fits ... ok
[INFO] [stdout] test ui::provider_list::tests::truncate_wide_cjk_odd_boundary ... ok
[INFO] [stdout] test ui::provider_list::tests::truncate_multibyte_emoji ... ok
[INFO] [stdout] test ui::provider_list::tests::truncate_no_room ... ok
[INFO] [stdout] test ui::snippet_output::tests::layout_has_spacer_between_content_and_footer ... ok
[INFO] [stdout] test ui::tag_picker::tests::layout_has_spacer_between_content_and_footer ... ok
[INFO] [stdout] test ui::snippet_picker::tests::layout_has_spacer_between_content_and_footer ... ok
[INFO] [stdout] test ui::tunnel_list::tests::layout_has_spacer_between_content_and_footer ... ok
[INFO] [stdout] test update::tests::test_cache_invalid_version_format ... ok
[INFO] [stdout] test update::tests::test_cache_missing_version_line ... ok
[INFO] [stdout] test update::tests::test_cache_non_numeric_timestamp ... ok
[INFO] [stdout] test update::tests::test_cache_fresh_older_version ... ok
[INFO] [stdout] test update::tests::test_cache_garbage ... ok
[INFO] [stdout] test ui::snippet_picker::tests::layout_with_search_and_header_has_spacer ... ok
[INFO] [stdout] test update::tests::test_cache_backwards_compat_no_headline ... ok
[INFO] [stdout] test ui::provider_list::tests::truncate_mixed_ascii_cjk ... ok
[INFO] [stdout] test update::tests::test_cache_empty_content ... ok
[INFO] [stdout] test update::tests::test_cache_empty_version ... ok
[INFO] [stdout] test update::tests::test_cache_exactly_at_ttl ... ok
[INFO] [stdout] test update::tests::test_cache_expired ... ok
[INFO] [stdout] test update::tests::test_cache_fresh_newer_version ... ok
[INFO] [stdout] test update::tests::test_cache_fresh_newer_with_headline ... ok
[INFO] [stdout] test update::tests::test_cache_only_timestamp ... ok
[INFO] [stdout] test update::tests::test_cargo_custom_home ... ok
[INFO] [stdout] test update::tests::test_cargo_default_path ... ok
[INFO] [stdout] test update::tests::test_cargo_rejects_nested_bin ... ok
[INFO] [stdout] test update::tests::test_current_version_is_valid ... ok
[INFO] [stdout] test update::tests::test_cargo_rejects_prefix_overlap ... ok
[INFO] [stdout] test update::tests::test_detect_curl_local_bin ... ok
[INFO] [stdout] test update::tests::test_detect_cargo_default ... ok
[INFO] [stdout] test update::tests::test_cache_fresh_up_to_date ... ok
[INFO] [stdout] test update::tests::test_detect_no_false_positive_homebrew_in_name ... ok
[INFO] [stdout] test update::tests::test_detect_unknown_path ... ok
[INFO] [stdout] test update::tests::test_extract_headline_no_bullet ... ok
[INFO] [stdout] test update::tests::test_extract_headline_only_blanks ... ok
[INFO] [stdout] test update::tests::test_extract_headline_skips_blank_lines ... ok
[INFO] [stdout] test update::tests::test_extract_headline_skips_heading ... ok
[INFO] [stdout] test update::tests::test_detect_root_path ... ok
[INFO] [stdout] test update::tests::test_extract_release_notes ... ok
[INFO] [stdout] test update::tests::test_detect_homebrew_cellar ... ok
[INFO] [stdout] test update::tests::test_extract_headline_empty ... ok
[INFO] [stdout] test update::tests::test_detect_homebrew_default_intel ... ok
[INFO] [stdout] test update::tests::test_homebrew_cellar_rejects_prefix_overlap ... ok
[INFO] [stdout] test update::tests::test_detect_curl_usr_local_bin ... ok
[INFO] [stdout] test update::tests::test_extract_release_notes_missing_body ... ok
[INFO] [stdout] test update::tests::test_is_newer_major ... ok
[INFO] [stdout] test update::tests::test_is_newer_minor ... ok
[INFO] [stdout] test update::tests::test_extract_version_invalid_format ... ok
[INFO] [stdout] test update::tests::test_is_newer_patch ... ok
[INFO] [stdout] test update::tests::test_extract_version_missing_tag ... ok
[INFO] [stdout] test update::tests::test_extract_version_with_v_prefix ... ok
[INFO] [stdout] test update::tests::test_extract_version_without_prefix ... ok
[INFO] [stdout] test update::tests::test_homebrew_cellar_apple_silicon ... ok
[INFO] [stdout] test update::tests::test_homebrew_cellar_intel ... ok
[INFO] [stdout] test update::tests::test_homebrew_cellar_linuxbrew ... ok
[INFO] [stdout] test update::tests::test_homebrew_cellar_rejects_bare_cellar ... ok
[INFO] [stdout] test update::tests::test_homebrew_cellar_rejects_non_cellar_suffix ... ok
[INFO] [stdout] test update::tests::test_is_newer_equal ... ok
[INFO] [stdout] test update::tests::test_parse_version ... ok
[INFO] [stdout] test update::tests::test_parse_version_invalid ... ok
[INFO] [stdout] test update::tests::test_strip_markdown_bare_brackets ... ok
[INFO] [stdout] test update::tests::test_detect_homebrew_default_linuxbrew ... ok
[INFO] [stdout] test update::tests::test_extract_headline_bullet ... ok
[INFO] [stdout] test update::tests::test_is_newer_invalid ... ok
[INFO] [stdout] test update::tests::test_strip_markdown_bold ... ok
[INFO] [stdout] test update::tests::test_strip_markdown_nested_brackets_in_link ... ok
[INFO] [stdout] test update::tests::test_strip_markdown_bullet ... ok
[INFO] [stdout] test update::tests::test_strip_markdown_control_chars ... ok
[INFO] [stdout] test update::tests::test_strip_markdown_escape_sequences ... ok
[INFO] [stdout] test update::tests::test_strip_markdown_heading ... ok
[INFO] [stdout] test update::tests::test_strip_markdown_underscore_bold ... ok
[INFO] [stdout] test update::tests::test_strip_markdown_plain_text ... ok
[INFO] [stdout] test update::tests::test_update_agent_creates_without_panic ... ok
[INFO] [stdout] test update::tests::test_strip_markdown_heading_h3 ... ok
[INFO] [stdout] test update::tests::test_version_check_agent_creates_without_panic ... ok
[INFO] [stdout] test update::tests::test_strip_markdown_link ... ok
[INFO] [stdout] test update::tests::test_strip_markdown_multiple_links ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- handler::tests::test_snippet_form_submit_rollback_on_save_failure stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'handler::tests::test_snippet_form_submit_rollback_on_save_failure' (2246) panicked at src/handler.rs:6955:9:
[INFO] [stdout] assertion `left == right` failed
[INFO] [stdout]   left: 3
[INFO] [stdout]  right: 2
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x61a30a600cfa - std[f92b4c606f291077]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x61a30a600cfa - std[f92b4c606f291077]::backtrace_rs::backtrace::trace_unsynchronized::<std[f92b4c606f291077]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x61a30a600cfa - std[f92b4c606f291077]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x61a30a600cfa - <<std[f92b4c606f291077]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[786f478f706679df]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x61a30a61a35a - <core[786f478f706679df]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x61a30a61a35a - core[786f478f706679df]::fmt::write
[INFO] [stdout]    6:     0x61a30a606442 - std[f92b4c606f291077]::io::default_write_fmt::<alloc[64763625b5a07cdb]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x61a30a606442 - <alloc[64763625b5a07cdb]::vec::Vec<u8> as std[f92b4c606f291077]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x61a30a5da63f - <std[f92b4c606f291077]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x61a30a5da63f - std[f92b4c606f291077]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x61a30a5f6c09 - std[f92b4c606f291077]::panicking::default_hook
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x61a30a44a6cc - <alloc[64763625b5a07cdb]::boxed::Box<dyn for<'a, 'b> core[786f478f706679df]::ops::function::Fn<(&'a std[f92b4c606f291077]::panic::PanicHookInfo<'b>,), Output = ()> + core[786f478f706679df]::marker::Sync + core[786f478f706679df]::marker::Send> as core[786f478f706679df]::ops::function::Fn<(&std[f92b4c606f291077]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   12:     0x61a30a44a6cc - test[20e1f0ae6cad7a17]::test_main_with_exit_callback::<test[20e1f0ae6cad7a17]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x61a30a5f6e82 - <alloc[64763625b5a07cdb]::boxed::Box<dyn for<'a, 'b> core[786f478f706679df]::ops::function::Fn<(&'a std[f92b4c606f291077]::panic::PanicHookInfo<'b>,), Output = ()> + core[786f478f706679df]::marker::Sync + core[786f478f706679df]::marker::Send> as core[786f478f706679df]::ops::function::Fn<(&std[f92b4c606f291077]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   14:     0x61a30a5f6e82 - std[f92b4c606f291077]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x61a30a5da6f8 - std[f92b4c606f291077]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x61a30a5d1639 - std[f92b4c606f291077]::sys::backtrace::__rust_end_short_backtrace::<std[f92b4c606f291077]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x61a30a5db9cd - __rustc[8241495c18a89d70]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x61a30a61ab9c - core[786f478f706679df]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x61a30a61aa53 - core[786f478f706679df]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/panicking.rs:439:17
[INFO] [stdout]   20:     0x61a30a61478d - core[786f478f706679df]::panicking::assert_failed::<usize, usize>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x61a3097321cf - purple[22a16c412b703dc5]::handler::tests::test_snippet_form_submit_rollback_on_save_failure
[INFO] [stdout]                                at /opt/rustwide/workdir/src/handler.rs:6955:9
[INFO] [stdout]   22:     0x61a3096d1ff7 - purple[22a16c412b703dc5]::handler::tests::test_snippet_form_submit_rollback_on_save_failure::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/handler.rs:6939:59
[INFO] [stdout]   23:     0x61a3098125f6 - <purple[22a16c412b703dc5]::handler::tests::test_snippet_form_submit_rollback_on_save_failure::{closure#0} as core[786f478f706679df]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x61a30a43e7ab - <fn() -> core[786f478f706679df]::result::Result<(), alloc[64763625b5a07cdb]::string::String> as core[786f478f706679df]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x61a30a43e7ab - test[20e1f0ae6cad7a17]::__rust_begin_short_backtrace::<core[786f478f706679df]::result::Result<(), alloc[64763625b5a07cdb]::string::String>, fn() -> core[786f478f706679df]::result::Result<(), alloc[64763625b5a07cdb]::string::String>>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/test/src/lib.rs:663:18
[INFO] [stdout]   26:     0x61a30a44b19b - test[20e1f0ae6cad7a17]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/test/src/lib.rs:686:74
[INFO] [stdout]   27:     0x61a30a44b19b - <core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<test[20e1f0ae6cad7a17]::run_test_in_process::{closure#0}> as core[786f478f706679df]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x61a30a44b19b - std[f92b4c606f291077]::panicking::catch_unwind::do_call::<core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<test[20e1f0ae6cad7a17]::run_test_in_process::{closure#0}>, core[786f478f706679df]::result::Result<(), alloc[64763625b5a07cdb]::string::String>>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x61a30a44b19b - std[f92b4c606f291077]::panicking::catch_unwind::<core[786f478f706679df]::result::Result<(), alloc[64763625b5a07cdb]::string::String>, core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<test[20e1f0ae6cad7a17]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x61a30a44b19b - std[f92b4c606f291077]::panic::catch_unwind::<core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<test[20e1f0ae6cad7a17]::run_test_in_process::{closure#0}>, core[786f478f706679df]::result::Result<(), alloc[64763625b5a07cdb]::string::String>>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x61a30a44b19b - test[20e1f0ae6cad7a17]::run_test_in_process
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/test/src/lib.rs:686:27
[INFO] [stdout]   32:     0x61a30a44b19b - test[20e1f0ae6cad7a17]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/test/src/lib.rs:607:43
[INFO] [stdout]   33:     0x61a30a4468b4 - test[20e1f0ae6cad7a17]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/test/src/lib.rs:637:41
[INFO] [stdout]   34:     0x61a30a4468b4 - std[f92b4c606f291077]::sys::backtrace::__rust_begin_short_backtrace::<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x61a30a44dda2 - std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked::<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   36:     0x61a30a44dda2 - <core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[786f478f706679df]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x61a30a44dda2 - std[f92b4c606f291077]::panicking::catch_unwind::do_call::<core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x61a30a44dda2 - std[f92b4c606f291077]::panicking::catch_unwind::<(), core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x61a30a44dda2 - std[f92b4c606f291077]::panic::catch_unwind::<core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x61a30a44dda2 - std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked::<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   41:     0x61a30a44dda2 - <std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1} as core[786f478f706679df]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x61a30a5ffeaf - <alloc[64763625b5a07cdb]::boxed::Box<dyn core[786f478f706679df]::ops::function::FnOnce<(), Output = ()> + core[786f478f706679df]::marker::Send> as core[786f478f706679df]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/alloc/src/boxed.rs:2240:9
[INFO] [stdout]   43:     0x61a30a5ffeaf - <std[f92b4c606f291077]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   44:     0x7805e823caa4 - <unknown>
[INFO] [stdout]   45:     0x7805e82c9a64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- handler::tests::test_snippet_picker_d_rollback_on_save_failure stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'handler::tests::test_snippet_picker_d_rollback_on_save_failure' (2257) panicked at src/handler.rs:6774:9:
[INFO] [stdout] assertion `left == right` failed
[INFO] [stdout]   left: 1
[INFO] [stdout]  right: 2
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x61a30a600cfa - std[f92b4c606f291077]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x61a30a600cfa - std[f92b4c606f291077]::backtrace_rs::backtrace::trace_unsynchronized::<std[f92b4c606f291077]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x61a30a600cfa - std[f92b4c606f291077]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x61a30a600cfa - <<std[f92b4c606f291077]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[786f478f706679df]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x61a30a61a35a - <core[786f478f706679df]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x61a30a61a35a - core[786f478f706679df]::fmt::write
[INFO] [stdout]    6:     0x61a30a606442 - std[f92b4c606f291077]::io::default_write_fmt::<alloc[64763625b5a07cdb]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x61a30a606442 - <alloc[64763625b5a07cdb]::vec::Vec<u8> as std[f92b4c606f291077]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x61a30a5da63f - <std[f92b4c606f291077]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x61a30a5da63f - std[f92b4c606f291077]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x61a30a5f6c09 - std[f92b4c606f291077]::panicking::default_hook
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x61a30a44a6cc - <alloc[64763625b5a07cdb]::boxed::Box<dyn for<'a, 'b> core[786f478f706679df]::ops::function::Fn<(&'a std[f92b4c606f291077]::panic::PanicHookInfo<'b>,), Output = ()> + core[786f478f706679df]::marker::Sync + core[786f478f706679df]::marker::Send> as core[786f478f706679df]::ops::function::Fn<(&std[f92b4c606f291077]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   12:     0x61a30a44a6cc - test[20e1f0ae6cad7a17]::test_main_with_exit_callback::<test[20e1f0ae6cad7a17]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x61a30a5f6e82 - <alloc[64763625b5a07cdb]::boxed::Box<dyn for<'a, 'b> core[786f478f706679df]::ops::function::Fn<(&'a std[f92b4c606f291077]::panic::PanicHookInfo<'b>,), Output = ()> + core[786f478f706679df]::marker::Sync + core[786f478f706679df]::marker::Send> as core[786f478f706679df]::ops::function::Fn<(&std[f92b4c606f291077]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   14:     0x61a30a5f6e82 - std[f92b4c606f291077]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x61a30a5da6f8 - std[f92b4c606f291077]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x61a30a5d1639 - std[f92b4c606f291077]::sys::backtrace::__rust_end_short_backtrace::<std[f92b4c606f291077]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x61a30a5db9cd - __rustc[8241495c18a89d70]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x61a30a61ab9c - core[786f478f706679df]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x61a30a61aa53 - core[786f478f706679df]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/panicking.rs:439:17
[INFO] [stdout]   20:     0x61a30a61478d - core[786f478f706679df]::panicking::assert_failed::<usize, usize>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x61a309729d09 - purple[22a16c412b703dc5]::handler::tests::test_snippet_picker_d_rollback_on_save_failure
[INFO] [stdout]                                at /opt/rustwide/workdir/src/handler.rs:6774:9
[INFO] [stdout]   22:     0x61a3096d1997 - purple[22a16c412b703dc5]::handler::tests::test_snippet_picker_d_rollback_on_save_failure::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/handler.rs:6763:56
[INFO] [stdout]   23:     0x61a309811d76 - <purple[22a16c412b703dc5]::handler::tests::test_snippet_picker_d_rollback_on_save_failure::{closure#0} as core[786f478f706679df]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x61a30a43e7ab - <fn() -> core[786f478f706679df]::result::Result<(), alloc[64763625b5a07cdb]::string::String> as core[786f478f706679df]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x61a30a43e7ab - test[20e1f0ae6cad7a17]::__rust_begin_short_backtrace::<core[786f478f706679df]::result::Result<(), alloc[64763625b5a07cdb]::string::String>, fn() -> core[786f478f706679df]::result::Result<(), alloc[64763625b5a07cdb]::string::String>>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/test/src/lib.rs:663:18
[INFO] [stdout]   26:     0x61a30a44b19b - test[20e1f0ae6cad7a17]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/test/src/lib.rs:686:74
[INFO] [stdout]   27:     0x61a30a44b19b - <core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<test[20e1f0ae6cad7a17]::run_test_in_process::{closure#0}> as core[786f478f706679df]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x61a30a44b19b - std[f92b4c606f291077]::panicking::catch_unwind::do_call::<core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<test[20e1f0ae6cad7a17]::run_test_in_process::{closure#0}>, core[786f478f706679df]::result::Result<(), alloc[64763625b5a07cdb]::string::String>>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x61a30a44b19b - std[f92b4c606f291077]::panicking::catch_unwind::<core[786f478f706679df]::result::Result<(), alloc[64763625b5a07cdb]::string::String>, core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<test[20e1f0ae6cad7a17]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x61a30a44b19b - std[f92b4c606f291077]::panic::catch_unwind::<core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<test[20e1f0ae6cad7a17]::run_test_in_process::{closure#0}>, core[786f478f706679df]::result::Result<(), alloc[64763625b5a07cdb]::string::String>>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x61a30a44b19b - test[20e1f0ae6cad7a17]::run_test_in_process
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/test/src/lib.rs:686:27
[INFO] [stdout]   32:     0x61a30a44b19b - test[20e1f0ae6cad7a17]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/test/src/lib.rs:607:43
[INFO] [stdout]   33:     0x61a30a4468b4 - test[20e1f0ae6cad7a17]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/test/src/lib.rs:637:41
[INFO] [stdout]   34:     0x61a30a4468b4 - std[f92b4c606f291077]::sys::backtrace::__rust_begin_short_backtrace::<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x61a30a44dda2 - std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked::<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   36:     0x61a30a44dda2 - <core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[786f478f706679df]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x61a30a44dda2 - std[f92b4c606f291077]::panicking::catch_unwind::do_call::<core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x61a30a44dda2 - std[f92b4c606f291077]::panicking::catch_unwind::<(), core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x61a30a44dda2 - std[f92b4c606f291077]::panic::catch_unwind::<core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x61a30a44dda2 - std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked::<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   41:     0x61a30a44dda2 - <std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1} as core[786f478f706679df]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x61a30a5ffeaf - <alloc[64763625b5a07cdb]::boxed::Box<dyn core[786f478f706679df]::ops::function::FnOnce<(), Output = ()> + core[786f478f706679df]::marker::Send> as core[786f478f706679df]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/alloc/src/boxed.rs:2240:9
[INFO] [stdout]   43:     0x61a30a5ffeaf - <std[f92b4c606f291077]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   44:     0x7805e823caa4 - <unknown>
[INFO] [stdout]   45:     0x7805e82c9a64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     handler::tests::test_snippet_form_submit_rollback_on_save_failure
[INFO] [stdout]     handler::tests::test_snippet_picker_d_rollback_on_save_failure
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 2431 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.62s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin purple`
[INFO] running `Command { std: "docker" "inspect" "83de7e52562fa5986c6724d89b1106a5ae9b78d93f2953ac16c987fa5f9dd67e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "83de7e52562fa5986c6724d89b1106a5ae9b78d93f2953ac16c987fa5f9dd67e", kill_on_drop: false }`
[INFO] [stdout] 83de7e52562fa5986c6724d89b1106a5ae9b78d93f2953ac16c987fa5f9dd67e
